3

我已经在本地机器 X 上托管了 django 管理项目。 我在另一台机器 Y 上有一个外部 IP,我正在做从 Y 到 X 的代理传递。 http://10.4.x.y/myapp/admin works.

http://proxypassname.com/myapp/admin works. 但是,当我在管理页面中编辑后单击链接“保存”或“保存继续编辑”按钮时,它会重定向到本地机器 ip(即http://10.4.x.y/myapp/blah_blah_blah)。

如何确保 django 项目重定向到 proxypass 名称而不是本地 IP?

4

2 回答 2

3

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

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

在您的settings.py 中,只需设置:

USE_X_FORWARDED_HOST = 真

并重新启动你的 Django。

如果这不起作用,您可以尝试查看您的代理是否设置了不同类型的标头,并编写一个执行相同操作的中间件。这是Django 关于中间件的文档章节的第一个示例

于 2013-02-13T18:23:28.420 回答
1

我做了这两件事,它奏效了。

  1. 无论何时添加 ProxyPass,都应添加 ProxyPassReverse

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

于 2014-01-24T08:12:44.713 回答