前言
今天遇到一个问题,将前端压缩部署到nginx下,总是有几个静态资源文件找不到,要说是所有静态文件都找不到,那就说是我路径配置错了,但是只是个别几个找不到,很是奇怪,经过查看日志分析,是路径匹配的问题,下面具体记录下!
问题
下面是我的nginx配置文件的部分内容(未修改前)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| location / { index index.html; root /download/code/html; }
location ~ /(code|app) { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:9999; }
|
一开始的问题,http://127.0.0.1/code?random=1,这个路径是获取验证码的,但是发现匹配到第一个里去了,去找html/code文件,所以找不到,直接404,还有个问题是有个js文件名是`app.01ab.js`,但是确匹配到了第二个里去了,猛然一看,好像确实是,因为我这个只是字符串匹配,只要路径里有app,就会匹配到,所以需要加个开头匹配,修改配置如下后恢复正常
1 2 3 4 5 6 7 8
| location ~ ^/(code|app) { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:9999; }
|
结语
所以用正则匹配的时候一定要配置正确,如果需要开头匹配就一定要加开始符号,否则就是全路径字符串匹配