在proxypass后面托管一个django项目

时间:2013-02-11 13:48:07

标签: django django-admin proxypass

我已经在本地机器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?

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为管理员重定向到它认为具有的IP。它进入HTTP请求的标头。

然而,修复非常简单。假设您的代理服务器实现了X-Forwarded-For标准,则可以很容易地修复它。

settings.py 中,只需设置:

即可

USE_X_FORWARDED_HOST = True

并重启你的Django。

如果这不起作用,您可以尝试查看代理是否设置了不同类型的标头,并编写一个执行相同操作的中间件。这是Django's documentation chapter on middleware

上的第一个例子

答案 1 :(得分:0)

我做了这两件事并且有效。

  1. 每当您添加ProxyPass时,都应添加ProxyPassReverse

  2. 应将SITE_ID设置为您要指向此django项目的域。