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

时间:2011-12-21 14:14:36

标签: django nginx port

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

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

1 个答案:

答案 0 :(得分:4)

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

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

proxy_set_header X-Forwarded-Host $host:20111;

其次,添加到settings.py:

USE_X_FORWARDED_HOST = True

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

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

相关问题