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

近期文章: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

很明显后端也是正常的

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

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

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

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

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

reload nginx之后测试就正常了

Comments

No comments yet. Why don’t you start the discussion?

发表评论