nginx 反向代理 配置后404,原来是rewrite引起的

近期文章:

由于是海外项目,web有多台服务器而且是多语言,sitemap文件是在定时服务器上生成之后再同步到web服务器,比较麻烦,于是就想通过代理解决此问题,故而在web服务器nginx配置中添加proxy_pass

需求:

将代理到后端

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

很明显后端也是正常的

然后就在配置文件中看看是不是有其他优先级比较高的规则,导致加的代理规则没有匹配

于是就在配置中找到了下面这个

添加图片注释不超过 140 字可选

之后稍作修改,过滤掉sitemap目录

if (!-e $request_filename){      rewrite ^/(?!sitemap)(.*)$ /index.php?r=$1 last; }

reload nginx之后测试就正常了