目录Nginx location路径映射Nginx的location匹配规则Nginx的location语法alias与root的区别last 和 break关键字的区别permanent 和 redirect关键字的区别总结
Nginx location路径映射
nginx 配置 proxy_pass时可以实现URL路径的部分替换
1.proxy_pass的目标地址后,默认不带/,表示只代理域名,url和querystring部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)
2.目标地址后带/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址
例子:
server { location /xxx { proxy_pass http://server_url; } location /xxx { proxy_pass http://server_url/; } }比如请求 域名/xxx/index.html
实际代理的目标url分别是
proxy_pass不带/:http://server_url/xxx/index.html(直接拼接到路径后)proxy_pass带/:http://server_url/index.html (xxx被去掉)Nginx的location匹配规则
Nginx的location语法
location [=|~|~*|^~] /uri/ { … } = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求~ 区分大小写匹配(可用正则表达式)~* 不区分大小写匹配(可用正则表达式)!~ 区分大小写不匹配!~* 不区分大小写不匹配^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式示例1:
location / { }匹配任意请求
示例2:
location ~* .(gif|jpg|jpeg)$ { rewrite .(gif|jpg|jpeg)$ /logo.png; }不区分大小写匹配任何以gif、jpg、jpeg结尾的请求,并将该请求重定向到 /logo.png请求
location ~ ^.+.txt$ { root /usr/local/nginx/html/; }区分大小写匹配以.txt结尾的请求,并设置此location的路径是/usr/local/nginx/html/。
也就是以.txt结尾的请求将访问/usr/local/nginx/html/ 路径下的txt文件
alias与root的区别
root 实际访问文件路径会拼接URL中的路径alias 实际访问文件路径不会拼接URL中的路径示例如下:
location ^~ /sta/ { alias /usr/local/nginx/html/static/; } 请求:http://test.com/sta/sta1.html实际访问:/usr/local/nginx/html/static/sta1.html 文件 location ^~ /tea/ { root /usr/local/nginx/html/; } 请求:http://test.com/tea/tea1.html实际访问:/usr/local/nginx/html/tea/tea1.html 文件last 和 break关键字的区别
(1)last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异
(2)last 和 break 当出现在location 内部时:
last 使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚才的行为break 使用了break 指令,rewrite后不会跳出location 作用域,它的生命也在这个location中终结permanent 和 redirect关键字的区别
rewrite … permanent 永久性重定向,请求日志中的状态码为301rewrite … redirect 临时重定向,请求日志中的状态码为302总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
© 版权声明
THE END
暂无评论内容