你了解nginx location 的root和alice吗
来源:互联网 发布:css编程 编辑:程序博客网 时间:2024/06/05 16:27
上周四,有用户反映线上app中的的某个网页打不开,返回404,地址类似:http://xxx.xxx.com/projectContext/appWeb/page/device/deviceList.html
背景:由于之前后端项目的重构,所有的请求路径,后端服务器已经不支持/projectContext前缀了,但是为了能兼容老版本的接口,故在nginx中做了路径匹配转发
原有的nginx配置:
#对所有静态资源做了分离 规则A
location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css|js|html)$ { root /opt/www/wx_app_static_page/; expires 30d;}
#兼容老版/projectContext的请求路径 规则Blocation /projectContext { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://app.com/;}
#所有动态请求动态转发给后端服务器列表 规则Clocation /{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://app.com/;}
乍一看,没什么问题,html请求确实被匹配到规则A,但是仔细看,会发现/opt/www/wx_app_static_page/并没有 /projectContext/appWeb/page/device/deviceList.html这个路径,而真正的文件是在/opt/www/wx_app_static_page/appWeb/page/device/deviceList.html下,所以才会404
找到问题了,开始着手解决;于是想当然的加上下面的配置:
#匹配/projectContext/appWeb的请求
location ^~ /projectContext/appWeb/{ root /opt/www/wx_app_static_page/appWeb/;}重新加载nginx配置后,再访问上面那个路径,发现还是404,于是开启nginx日志,发现请求的html被定位到/opt/www/wx_app_static_page/appWeb/ projectContext/appWeb/page/device/deviceList.html; 会比正确的路径(/opt/www/wx_app_static_page/appWeb/page/device/deviceList.html) 多上匹配规则的前缀;于是乎,想起nginx还支持alias,alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录,正合我意
于是nginx配置改为:
location ^~ /projectContext/appWeb/{ alias /opt/www/wx_app_static_page/appWeb/$1;}重新加载配置,访问之前的url,发现一切正常。
总结:
1:root不会丢弃location后面配置的路径,而alias会丢弃,把当前匹配到的目录指向到指定的目录
2:使用alias时,目录名后面一定要加"/"
3:alias只能位于location块中
阅读全文
0 0
- 你了解nginx location 的root和alice吗
- nginx location的root和alias区别
- nginx 中location和root,你确定真的明白他们关系?
- nginx 中location和root,你确定真的明白他们关系?
- nginx 中location和root,你确定真的明白他们关系?
- nginx的location root 指令
- nginx中location的root和alias用法区别
- nginx的location、root、alias指令用法和区别
- nginx location alias 和 root 差别
- Nginx Location配置语法介绍、优先级说明、nginx的root和alias指令的区别
- Nginx 配置location root
- Nginx的alias与root的用法区别和location匹配规则
- Nginx的location匹配规则和全局变量
- Nginx的location和rewrite配置语法
- nginx 的 location 使用和定制
- 你应该了解nginx的七个原因
- nginx rewirte 和 location
- nginx location修改root 出现 403
- SQL中的DML,DDL,DCL分别表示的是什么
- TortoiseSVN与VisualSVN Server搭建SVN版本控制系统
- C语言中sprintf()函数的用法
- [leetcode] 394. Decode String
- JavaScript 箭头函数
- 你了解nginx location 的root和alice吗
- ueditor与ssh整合之上传图片篇
- HBase 集群监控
- MATLAB(1)——基本调试方法(Debug)
- 社交系统ThinkSNS-plus(TS+)iOS端APP V1.0.2研发播报
- 用python写网络爬虫读书笔记 第二章数据抓取
- XRecyclerView的使用下拉刷新
- 【Android】之 布局文件管理 与 包结构
- 关于listview中onItemClick点击事件失效的解决方法