标签归档:nginx

nginx使用非80端口做反代理 Django会重定向到错误端口的问题

使用nginx做反代理,设置的访问端口不是80,但是当打开网站重定向到登陆页面的时候,却转向到80端口上,导致打不开的问题。

解决办法

当一个Django应用部署在代理或负载均衡器后面的时候,解决这个问题需要依赖 X-Forwarded-Host 报头提供转发地址。

首先,添加下面字段到 nginx 的主机配置文件(插入到 location 部分),用于配置 nginx 发送出合适的报头:

其次,添加下面字段到 Django settings.py 文件,用于配置 Django 信任接收到的 X-Forwarded-Host 报头:

现在它应该能正常工作了。

另外,出于安全原因,应用不应该无条件信任接收到的 X-Forwarded-Host 参数,正确的做法是在Django settings.pyALLOWED_HOSTS配置中加入可信任的域名或者IP。

参考:django admin redirects to wrong port on save