nginx location
2015-10-24 12:20
477 查看
nginx location
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
修饰符解释
= 精确匹配
^~ 前缀匹配
无 前缀匹配
~ 区分大小写正则比配
~* 不区分大小正则匹配
@name 内部跳转用,不能嵌套和被嵌套
匹配规则
1,精确匹配(=)成功,则立即停止
2,匹配所有前缀匹配,记住最长前缀匹配的loaction
3,如果最长前缀匹配location是 ^~,则停止
4,然后按照书写顺序匹配正则location,找到则停止
5,如果没有找到匹配的正则location,则用之前找到的最长前缀匹配location
6,如果匹配到合适的location,则返回404
以上规则第6步有一个例外,当前缀匹配(空,^~)串以/结尾(like /app/)时且请求被 proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, or memcached_pass处理
时,当请求 /app (没有结尾的/)(/app没有合适的匹配)时会返回301 location: /app/,如果这不是期望的结果,
应该用 = 或正则匹配
ps:
1,location 里的正则支持捕获
2,匹配的uri最初是解码后的uri,发生内部跳转后可能会跟着变化
3,嵌套location还没有怎明白
参考
http://nginx.org/en/docs/http/ngx_http_core_module.html#location https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
修饰符解释
= 精确匹配
^~ 前缀匹配
无 前缀匹配
~ 区分大小写正则比配
~* 不区分大小正则匹配
@name 内部跳转用,不能嵌套和被嵌套
匹配规则
1,精确匹配(=)成功,则立即停止
2,匹配所有前缀匹配,记住最长前缀匹配的loaction
3,如果最长前缀匹配location是 ^~,则停止
4,然后按照书写顺序匹配正则location,找到则停止
5,如果没有找到匹配的正则location,则用之前找到的最长前缀匹配location
6,如果匹配到合适的location,则返回404
以上规则第6步有一个例外,当前缀匹配(空,^~)串以/结尾(like /app/)时且请求被 proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, or memcached_pass处理
时,当请求 /app (没有结尾的/)(/app没有合适的匹配)时会返回301 location: /app/,如果这不是期望的结果,
应该用 = 或正则匹配
ps:
1,location 里的正则支持捕获
2,匹配的uri最初是解码后的uri,发生内部跳转后可能会跟着变化
3,嵌套location还没有怎明白
参考
http://nginx.org/en/docs/http/ngx_http_core_module.html#location https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
相关文章推荐
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- windows 下nginx安装使用
- Nginx之location 匹配规则详解
- 查看nginx、php编译参数
- 利用TCMalloc优化nginx性能
- nginx 编译安装过程优化
- nginx favicon.ico 出现403 forbidden
- Nginx做前端Proxy时TIME_WAIT过多的问题
- 【nginx网站性能优化篇(1)】gzip压缩与expire浏览器缓存
- nginx优化篇之Linux 内核参数的优化
- 【nginx运维基础(6)】Nginx的Rewrite语法详解
- nginx源码学习资源
- nginx安装后出现502 Bad Gateway 错误解决办法
- nginx服务器配置
- nginx rewrite url
- 搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程
- linux下安装nginx
- 如何选择Haproxy和Nginx
- Install nginx on centos
- Nginx 无法启动,pid=4占用80端口