技术解析

问题1:nginx,使用了upstream模块配置了多个后端,然后反向代理,结果全变成了301跳转 问题2:nginx的rewrite规则用的时间长了似乎消不掉,要重启好几次
0
2021-05-31 08:36:53
idczone
问题1:nginx,使用了upstream模块配置了多个后端,然后反向代理,结果全变成了rewrite
upstream mybackend
{
serve美国服务器r aaa.com #一般情况下用aaa.com作为主要的后端
server bbb.com backup #aaa.com挂了就用bbb.com
}

server
{
listen 80;
server_name www.ccc.com;#ccc.com是用户实际访问的地址,被反代到mybackend去
location /
{
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
proxy_pass http://mybakend;#反代ccc.com到mybackend
}
}
在aaa.com挂掉的情况下,测试浏览器输入www.ccc.com,结果跳到bbb.com,但是不是反代的,而是直接301跳转过去,地址栏也变成了bbb.com,我想要的结果是输入www.ccc.com,展现bbb.com的内容但是地址栏不要变成bbb.com啊

问题2:nginx的rewrite规则用的时间长了似乎消不掉,要重启好几次(去年10月份的nginx版本)
以前我给nginx写了一个rewrite吧所有泛域名301导向到网站test.com
然后我吧这个rewrite取消,但是重启nginx后,所有泛域名还是无条件跳到test.com
重启好几次后(次数不定,linux也重启过),有时候能正常,有时候一直都保持之前的rewrite跳转
这种情况怎么办
配置应该没错,用firebug看下具体的返回
1.感觉是bbb.com的返回http头或html自已执行了301转跳了
2.会不会浏览器缓存?感觉不太可能是ningx的问题
或者试升下最新版看下

感觉ngxin运行时间久了经常会出现这总问题,有时候重启动多次会好,会不会是nginx的bug

1,如果直接用aaa.com访问没问题,基本可以判定是你的配置文件有问题。
2,可能是chrome的问题,换个浏览器试试看?

Http block: disable server name redirect
Proxy pass block: add Host $host to backend
Read proxy pass help page carefully and make a new conf

重启可以试试:
killall nginx
/etc/init.d/nginx start

我也遇到了相同的问题,但是我的只有路径后面不加 /才会有 301 跳转啊

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服