我已经在本地机器X上托管了django管理项目。
http://10.4.x.y/myapp/admin works.
我在另一台机器Y上有一个外部IP,我正在进行代理通行证
从Y到X.
http://proxypassname.com/myapp/admin works.
但是,当我在管理页面中编辑后单击“保存”或“保存继续编辑”按钮时,它会重定向到本地计算机IP(即http://10.4.x.y/myapp/blah_blah_blah
)。
如何确保django项目重定向到proxypass名称而不是本地IP?
答案 0 :(得分:2)
这种情况正在发生,因为管理员重定向到它认为具有的IP。它进入HTTP请求的标头。
然而,修复非常简单。假设您的代理服务器实现了X-Forwarded-For标准,则可以很容易地修复它。
在 settings.py 中,只需设置:
即可USE_X_FORWARDED_HOST = True
并重启你的Django。
如果这不起作用,您可以尝试查看代理是否设置了不同类型的标头,并编写一个执行相同操作的中间件。这是Django's documentation chapter on middleware
上的第一个例子答案 1 :(得分:0)
我做了这两件事并且有效。
每当您添加ProxyPass时,都应添加ProxyPassReverse
应将SITE_ID设置为您要指向此django项目的域。