近期文章:nginx 开启 brotli 压缩,并解决反向代理异常
由于是海外项目,web有多台服务器而且是多语言,sitemap文件是在定时服务器上生成之后再同步到web服务器,比较麻烦,于是就想通过代理解决此问题,故而在web服务器nginx配置中添加proxy_pass
需求:
将https://zh.xxx.com/sitemap/zh/topic-cht.xml.gz代理到后端http://172.31.20.89/sitemap/zh/topic-cht.xml.gz
location ^~ /sitemap/ { proxy_pass http://172.31.20.89; }
当通过域名请求时返回404,但ll我肯定上面的配置是没错的,那就试试后端代理是否正常
[root@web1 vhost]# curl -I http://172.31.20.89/sitemap/zh/topic-cht.xml.gz
很明显后端也是正常的
然后就在配置文件中看看是不是有其他优先级比较高的规则,导致加的代理规则没有匹配
于是就在配置中找到了下面这个
之后稍作修改,过滤掉sitemap目录
if (!-e $request_filename){ rewrite ^/(?!sitemap)(.*)$ /index.php?r=$1 last; }
reload nginx之后测试就正常了