我有一个 django 实例在虚拟机(不是由我管理)上使用 apache 和 mod_wsgi 提供服务。
request.get_host() 我从( 和)获得的值build_absolute_uri()是虚拟机的内部网络 IP 地址,而不是我用来发出 HTTP 请求的 Internet DNS 主机名。
需要在 django 外部进行哪些配置才能使 django 认为它的主机是外部主机名?
(目前我在 settings.py 中进行了修改,我在其中写入主机名并使用它来构造 url 等,作为解决方法)。
如果您设置了 django 设置USE_X_FORWARDED_HOST,那么 django 将查找名为 的请求标头X-Forwarded-Host并使用它。
如果上述方法没有成功,那么 django 将使用Host请求标头。
如果上述方法都不起作用(这种情况应该很少见),django 将使用 WSGI 环境变量,SERVER_NAME该变量很可能是 python 应用程序服务器正在侦听的套接字的 IPv4/v6 地址。
最有可能的是,您正在 python 服务器前面运行反向代理服务器,并且代理正在更改原始请求的主机标头。如果是这种情况,您可能需要在 django 中设置 settings.USE_X_FORWARDED_HOST ,并告诉您的代理在X-Forwarded-Host.
| 归档时间: |
|
| 查看次数: |
5127 次 |
| 最近记录: |