深圳市律师网站建设怎么样,网站流量合作,广西灵山县建设局网站,wordpress去重插件目录 1.Url重写rewrite
2.防盗链
3.静态资源压缩 4.跨域问题 1.Url重写rewrite #x1f929;#x1f929;#x1f929;
1.1.rewrite书写格式
rewrite是实现URL重写的关键指令#xff0c;根据regex#xff08;正则表达式#xff09;部分内容#xff0c;重定向到rep…目录 1.Url重写rewrite
2.防盗链
3.静态资源压缩 4.跨域问题 1.Url重写rewrite
1.1.rewrite书写格式
rewrite是实现URL重写的关键指令根据regex正则表达式部分内容重定向到replacement结尾是flag标记。 rewrite regex replacement [flag]; 关键字 正则 替代内容 flag标记 关键字其中关键字error_log不能改变正则perl兼容正则表达式语句进行规则匹配替代内容将正则匹配的内容替换成replacementflag标记rewrite支持的flag标记 flag标记说明 last #本条规则匹配完成后继续向下匹配新的location URI规则 break #本条规则匹配完成即终止不再匹配后面任何规则 redirect #返回302临时重定向浏览器地址会显示跳转后的URL地址 permanent #返回301永久重定向浏览器地址栏会显示跳转后的URL地址 1.2.常用正则表达式说明 \ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符而“\$”则匹配“$” ^ 匹配输入字符串的起始位置 $ 匹配输入字符串的结束位置 * 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” 匹配前面的字符一次或多次。如“ol”能匹 配“ol”及“oll”、“oll”但不能匹配“o” ? 匹配前面的字符零次或一次例如“do(es)?”能匹配“do”或者“does”?等效于{0,1} . 匹配除“\n”之外的任何单个字符若要匹配包括“\n”在内的任意字符请使用诸如“[.\n]”之类的模式。
1.3.nginx.conf配置 server {listen 80;server_name hqdmdxz.com;location / {rewrite ^/a.png /image/01.png redirect;proxy_pass http://hqdmdxz;proxy_redirect default;proxy_next_upstream error timeout http_500 http_503 http_404;}}
通过测试可以看出当请求hqdmdxz/a.png时会跳转到hqdmdxz/image/01.png rewrite重定向 1.4.if指令
该指令用来支持条件判断,并根据条件判断结果选择不同的Nginx配置。
语法if (condition){...}默认值------------------位置server、 location condition为判定条件可以支持以下写法
1.变量名。如果变量名对应的值为空字符串或0, if都判断为false,其他条件为true
if($param){}
2.使用和!比较变量和字符串是否相等,满足条件为true,不满足为false
if($request_method ! POST){}
3. 使用正则表达式对变量进行匹配匹配成功返回true否则返回false。变量与正则表达式之间使用-,--,-*来连接。 -代表匹配正则表达式过程中区分大小写~*代表匹配正则表达式过程中不区分大小写!~和!-*刚好和上面取相反值,如果匹配上返回false,匹配不上返回true if ($http_user_agent ~* safari){return 200 Chrome;}
1.5.return指令 该指令用于完成对请求的处理,直接向客户端返回。在return后的所有Nginx配置都是无效的。 1.6rewrite_log指令 该指令配置是否开启URL重写日志的输出功能。 语法rewrite_log on|off; 注开启后, URL重写的相关日志将以notice级别输出到error_log指令配置的日志文件汇总。 location /rewrite {rewrite_log on;error_log logs/error.log notice;rewrite ^/rewrite/url\w*$ http://192.168.20.129/a.png;rewrite ^/rewrite/(test)\w*$ /$1 redirect;rewrite ^/rewrite/(demo)\w*$ /$1 redirect;}
2.防盗链
防盗链简单来说就是存在我们服务中的一些资源只有我们规定的合法的一类人才能去访问其他人就不能去访问的资源如cssjsimg等资源。 具体体现
准备两台服务器A服务器跳转到B服务器上访问B服务器上的图片。 server {listen 80;server_name xz.com;location / {proxy_pass http://192.168.20.129;proxy_redirect default;proxy_next_upstream error timeout http_500 http_503 http_404;}
} 通过xz.com/image/01.png可以访问到图片 给B服务器添加防盗链配置 location /image/ {root /data/;autoindex on;valid_referers none blocked 192.168.20.129;if ($invalid_referer) {return 401;}}location /error/ {root /data/;autoindex on;}error_page 401 /401.html;location /401.html {root html;}none: 如果Header中的Referer为空允许访问 (直接访问图片是没有referer的)blocked:在Header中的Referer不为空但是该值被防火墙或代理进行伪装过如不带http:// 、https://等协议头的资源允许访问。 location /image/ {}为设置防盗链的文件目录使用竖线|分隔。valid_referers 192.168.20.129;这个是如果返回的头部referer为192.168.20.129那么就不会执行valid_referer下面内容反之就if ($invalid_referer)这个含义就是结合上面的valid_referers如果请求头部为192.168.20.129那么就$invalid_referer就会被赋值为0就不会执行返回错误代码401如果不是www.baidu.com那么就会赋值为1就会执行下面内return 403;代表返回的状态码为403。 测试
ocation /image/ {root /data/;autoindex on;valid_referers blocked 192.168.20.129;if ($invalid_referer) {return 401;}
}发现还能访问为什莫跳转到401.html呢
解答:因为我们是直接访问的 这种是没有头部的只有二次请求才会有referer头部而且我们还加none如果Header中的Referer为空允许访问。
配置中去掉none再次访问防盗链起作用 至此防盗链生效 3.静态资源压缩 在Nginx的配置文件中可以通过配置gzip来对静态资源进行压缩,相关的指令可以配置在http块、server块和location块中, Nginx可以通过 ngx_http_gzip_module模块ngx_http_gzip_static_module模块ngx_http_gunzip_module模块 对这些指令进行解析和处理。 注:下面的指令都来自ngx_http_gzip_module模块该模块会在nginx安装的时候内置到nginx的安装环境中,也就是说我们可以直接使用这些指令。 3.1.gzip指令 1.gizp用于开启或者关闭gzip功能 2.语法gzip on|off; 3.2.gzip_types指令
http{gzip on;gzip_types 所选值在mime.types查找
}
3.3.gzip_comp_leve指令 gzip_comp_level指令:该指令用于设置Gzip压缩程度,级别从1-9,1表示要是程度最低,要是效率最高,9刚好相反,压缩程度最高,但是效率最低最费时间。 http {gzip_com_level 级别;
}
3.4gzip_vary指令 gzip_vary指令:该指令用于设置使用Gzip进行压缩发送是否携带Vary:AcceptEncoding头域的响应头部。主要是告诉接收方,所发送的数据经过了Gzip压缩处理. 语法gzip_vary on|off http {gzip_vary on;
} 3.5.gzip_buffers指令 该指令用干处理请求压缩的缓冲区数量和大小。语法gzip_buffers number size; 其中number:指定Nginx服务器向系统申请缓存空间个数size指的是每个缓存空间的大小。主要实现的是申请number个每个大小为size的内存空间。这个值的设定一般会和服务器的操作系统有关,所以建议此项不设置,使用默认值即可。 3.6.gzip_disable指令 gzip_disable指令:针对不同种类客户端发起的请求,可以选择性地开启和关闭Gzip功能。语法:gzip_disable regex...; regex根据客户端的浏览器标志(user-agent来设置支持使用正则表达式。指定的浏览器标志不使用Gzip.该指令一般是用来排除一些明显不支持Gzip的浏览器。 http{gzip_disable Mozilla/5.0.*;
} 3.7.gzip_min_length指令 gzip_min_length指令:针对传输数据的大小,可以选择性地开启和关闭Gzip功能。语法语法gzip_min_length length; Gzip压缩功能对大数据的压缩效果明显但是如果要压缩的数据比较小的话可能出现越压缩数据量越大的情况,因此我们需要根据响应内容的大小来决定是否使用Gzip功能响应页面的大小可以通过头信息中的content-Length来获取。但是如何使用了Chunk编码动态压缩该指令将被忽略。建议设置为1K或以上。 http {gzip_min_length 86028;
}
3.8.gzip_proxied指令 gzip_proxied指令:该指令设置是否对服务端返回的结果进行Gzip压缩。语法gzip proxied off|expired|no-cache| br/ no-store | private | no_last_modified | no_etag |auth |any; off-关闭Nginx服务器对后台服务器返回结果的Gzip压缩 expired-启用压缩,如果header头中包含 Expires 头信息 no-cache - 启用压缩如果header头中包含 Cache-Control:no-cache 头信息 no-store-启用压缩,如果header头中包含Cache-Control:no-store 头信息 private -启用压缩如果header头中包含 Cache-Control:private 头信息 no_last_modified-启用压缩,如果header头中不包含Last-Modified 头信息 no_etag- 启用压缩如果header头中不包含 ETag 头信息 auth-启用压缩,如果header头中包含Authorization头信息 any-无条件启用压缩 4.跨域问题 4.1同源策略
同源:协议、域名(IP)、端口相同即为同源
4.2什么是跨域 有两台服务器分别为A,B如果从服务器A的页面发送异步请求到服务器B获取数据如果服务器A和服务器B不满足同源策略,则就会出现跨域问题。 4.3解决跨域 此处用来解决跨域问题需要添加两个头信息 Access-Control-Allow-Origin:直译过来是允许跨域访问的源地址信息,可以配置多个(多个用逗号分隔)也可以使用*代表所有源Access-Control-Allow-Methods:直译过来是允许跨域访问的请求方式,值可以为GETPOST PUT DELETE...可以全部设置也可以根据需要设置,多个用逗号分隔 location /请求地址 {add_header Access-Control-Allow_orign 允许跨域的idadd_header Access-Control-Allow-Methods GETPOST,PUT,DELETE
}