Nginx重定向
前段时间接到同事的反馈说是系统中某个页面提示连接超时。我排查了一下,发现是页面重定向了。
打个比方:正常来讲,如果我在iis上部署了一套程序,端口号是8081,内网网址是http://192.168.10.1:8081,因为客户要求要能在外网上做业务,于是配置了nginx。设置的外网端口号是8082,外网网址是http://234.234.234.234:8082/,每次访问系统的页面时,都会把网址重定向到nginx配置的外网网址上。
但是,当访问部分页面时,网址虽然还是外网的网址http://234.234.234.234,但端口号又变回了8081。翻查了一下代码,发现跳转页面的时候用的是Page.Response.Redirect("xxx.aspx?");
又把页面给重定向了,但为什么会把端口号重定向,就不是很了解了。
解决的办法也很简单,据我所知的是两种:
1、修改nginx配置,比如说:
原来的nginx配置是:
proxy_pass http://192.168.10.1:8081/;
修改后为:
proxy_pass http://192.168.10.1:8081/;
#增加下面配置进行重定向到nginx的ip或者域名
proxy_redirect http://234.234.234.234:8081/ http://234.234.234.234:8082/;
#号部分是注释掉的内容。这个办法就是再跳一次,反复横跳。
2、修改代码,换一种打开页面的方法,别用Redirect,免得一直重定向,反复横跳。
外网映射
其实还有一种方法,但是就和nginx无关了。那种是设置了外网映射的情况下出现页面丢失的情况。解决的思路有点不同,方法就是修改外网映射的端口号或修改iis的端口号,使两者保持一致即可。当然,上面提到的第二个方法 - - 修改代码的方法依然能用。