首页 文章

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

提问于
浏览
7

我有一个用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 回答

  • 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

相关问题