django admin在保存时重定向到错误的端口

pho*_*olz 7 django port nginx

我有一个用nginx + apache设置的django项目.用于外部访问的http端口是20111,然后将其转发到服务器机器(具有内部IP)到端口80.因此nginx侦听端口80(并将相关请求传递到端口5000上的apache).

现在可以通过http:// externalip:20111从外部访问初始登录- 但是当我完成管理操作时,比如保存条目,我被重定向到http:// externalip/path/to/model -端口20111.结果是超时.如何告诉django 对所有管理重定向使用特定的主机名/端口(即http:// externalip:20111)?

Ren*_*Ivo 3

在代理或负载均衡器后面部署应用程序时,通常依赖X-Forwarded-Host标头。Django支持

首先,您必须设置 nginx 来发送正确的标头。添加到您的 nginx 主机配置(在您的location部分内):

proxy_set_header X-Forwarded-Host $host:20111;
Run Code Online (Sandbox Code Playgroud)

其次,添加到您的settings.py:

USE_X_FORWARDED_HOST = True
Run Code Online (Sandbox Code Playgroud)

它将允许 django 信任X-Forwarded-Host请求中的标头。

它应该适合你。出于安全原因,您不应信任 中发送的每个值X-Forwarded-Host,因此将您的受信任域/IP 添加到ALLOWED_HOSTSsettings.py