由于希望服务器路径不被访问所知道,所以做了伪静态
if ($host ~* ^([^\.]+)\.([^\.]+\.[^\.]+)$) {
} #这个是域名的一个规则,通过这个规则把域名分为二段分组,这样就可以取出第一个分组(获取二级域名)
在server块下,会优先执行rewrite部分,然后才会去匹配location块 server中的rewrite break和last没什么区别,都会去匹配location,所以没必要用last再发起新的请求,可以留空 location中的rewirte: 不写last和break 那么流程就是依次执行这些rewrite rewrite break url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变 rewrite last url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变 rewrite redirect 返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url(因为是临时) rewrite permanent 返回301永久重定向, 地址栏显示重定向后的url,爬虫更新url . 使用last会对server标签重新发起请求 如果location中rewrite后是对静态资源的请求,不需要再进行其他匹配,一般要使用break或不写,直接使用当前location中的数据源,完成本次请求 如果location中rewrite后,还需要进行其他处理,如动态fastcgi请求(.php,.jsp)等,要用last继续发起新的请求 (根的location使用last比较好, 因为如果有.php等fastcgi请求还要继续处理)
~ 为区分大小写的匹配。 ~* 不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。 !~ 不匹配的 !~* 不匹配的 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 * 重复零次或更多次 + 重复一次或更多次
\W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 零宽断言 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的位置 注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
当一个域名内容url需要访问另一个域名url内容,而且还想返回到浏览的状态为200,这时候下面的方法就可以解决了
location ^~ /xxx/dangan_search {
proxy_pass http://www.xxx.com/$uri$is_args$args;
}
location ^~ /xxx/exponent {
proxy_pass http://www.xxx.com/$uri$is_args$args;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx rewrite 常见设置 - Python技术站