我和nginx+apache建立了一个django项目。用于外部访问的http端口是20111,然后将其转发到服务器机器(具有内部IP)到端口80。因此,nginx监听端口80 (并将相关请求传递到端口5000上的apache )。
现在,可以通过http://externalip:20111从外部访问初始登录-但是当我完成管理操作时,例如保存条目,我会被重定向到http://externalip/path/to/model --没有端口20111。结果是超时。我如何告诉django为所有管理员重定向使用特定的主机名/端口(即http://externalip:20111)?
发布于 2014-07-11 02:53:53
在代理或负载均衡器后面部署应用程序时,通常依赖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
中发送的每个值,因此请在settings.py
中将您的可信域/ in添加到ALLOWED_HOSTS
https://stackoverflow.com/questions/8591189
复制