大丰专业做网站,如何做国外的电商网站,做淘宝客网站推广被骗,WordPress影视资源模板一.NGINX常用的正则表达式 二.Location
location作用:对访问的路径做访问控制或者代理转发
1.location 常用的匹配规则#xff1a;
进行普通字符精确匹配#xff0c;也就是完全匹配^~ / 表示普通字符匹配。使用前缀匹配。如果匹配成功#xff0c;则不再匹配其它 …一.NGINX常用的正则表达式 二.Location
location作用:对访问的路径做访问控制或者代理转发
1.location 常用的匹配规则
进行普通字符精确匹配也就是完全匹配^~ / 表示普通字符匹配。使用前缀匹配。如果匹配成功则不再匹配其它 正则匹配location。~ /区分大小写的匹配。~*不区分大小写的匹配。!~区分大小写的匹配取非。!~* 不区分大小写的匹配取非。
location 大致可以分为三类 精准匹配location / {...} 一般匹配location / {...} 一般匹配先匹配前缀匹配最后在用通用匹配 正则匹配location ~ / {...}
2.location匹配机制
优先级精准匹配 最长前缀匹配 ^~ 正则匹配 ~ ~* !~ !~* 一般前缀匹配 /XXXX 通用匹配 /
意思在没有精准匹配的情况下先看最长的前缀匹配取最长的前缀匹配如果最长前缀匹配有^~则不继续看正则匹配了如果最长前缀匹配没^~就要继续看正则匹配匹配到及停止。
前缀匹配看长度最长的优先匹配正则匹配看上下顺序根据nginx配置文件的配置由上往下依次匹配匹配到即停止 案例 三.Rewrite
rewrite的作用是对访问的域名或者域名内的URL路径地址重写 rewrite功能就是使用nginx提供的全局变量或自己设置的变量结合正则表达式和标记位实现URL重写以及重定向。 比如更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
注意rewrite只能放在server{},location{},if{}中并且默认只能对域名后边的除去传递的参数外的字符串起作用
例如 http://www.xy101.com/abc/bbs/index.php?a1b2 只对/abc/bbs/index.php重写。
rewrite跳转实现 Nginx通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断但不支持else 跳转从一个 location跳转到另一个location循环最多可以执行10次超过后nginx将返回500错误
rewrite 执行顺序如下
(1) 执行 server 块里面的 rewrite 指令。 (2) 执行 location 匹配。 (3) 执行选定的 location 中的 rewrite 指令。
rewrite的语法格式
第一种
rewrite regex replacement [flag];
regex 表示正则匹配规则。
replacement 表示跳转后的内容。
flag 表示 rewrite 支持的 flag 标记。第二种
$request_uri
if ($全局变量 ~ URL路径正则表达式) {rewrite 正则表达式 重写的地址 [标记位];
}flag标记说明
last 本条规则匹配完成后不终止重写后的url匹配一般用在 server 和 if 中。
break 本条规则匹配完成即终止终止重写后的url匹配一般使用在 location 中。
redirect 返回302临时重定向浏览器地址会显示跳转后的URL地址。
permanent 返回301永久重定向浏览器地址栏会显示跳转后的URL地址。案例:
1.将请求http://www.xy101.com/abc/123.html 跳转到首页http://www.xy101.com
location /abc/123.html {root /var/www/htmlrewrite ^/ http://www.xy101.com;
}
22
2.将请求http://www.xy101.com/abc/test.jpg 跳转到http://www.xy101.com/error.png
location /abc/test.jpg {root /var/www/html;rewrite ^/ error.png permanent; }
3
3.将请求http://www.xy102.com/discuz/index.php 跳转到http://www.xy101.com/discuz/index.php 保证原域名后面的uri路径不变
if ($host www.xy102.com) {rewrite ^/(.*)$ http://www.xy101.com/$1 permanent;} 4.将请求http://discuz.xy101.com/index.php 的访问跳转到http://www.xy101.com/discuz/index.php 保证原域名后面的uri路径不变。
if ($host discuz.xy101.com){rewrite ^/(.*)$ http://www.xy101.com/discuz/$1 permanent;} 5.将对http://www.xy101.com 网站的所有请求跳转到自定义的维护页面或图片本地可以访问
set $rewrite ture;
if ($remote_addr 本地主机主机ip) {set rewirte false;
}if (rewrite true) {rewrite ^/weihu.html;
} location /weihu.html {root /var/www/html;
}