使用Docker时如何在生产中设置ALLOWED_HOSTS Django设置?

时间:2019-09-13 09:11:15

标签: django docker

我总是通过Django中的环境变量设置ALLOWED_HOSTS。在开发.env中,我总是设置ALLOWED_HOSTS=.localhost,.127.0.0.1,在生产环境中ALLOWED_HOSTS=mydomain.dom,my_ip_address

现在,我现在已经熟悉Docker,问题是ALLOWED_HOSTS在生产中的价值是什么。它应该保留为本地主机,因为我知道本地主机将引用主机容器,还是应将其设置为我的域。我正在使用Nginx进行反向代理转发请求。

3 个答案:

答案 0 :(得分:1)

您可以只使用常规的域/ IP地址。 ALLOWED_HOSTS与与服务器IP匹配的用户头有关。服务器的内部机制与它无关。

ALLOWED_HOSTS=mydomain.dom,my_ip_address

这是您应该使用的。

答案 1 :(得分:0)

您应该将其设置为您的域。 ALLOWED_HOSTS用于确定请求是否源自正确的域名。

如果您查看the docs for ALLOWED_HOSTS,则会发现它与请求的Host标头进行了比较,该标头是由访问您网站的人的用户代理设置的。

因此,尽管Docker容器正在为其自己的本地主机提供服务,但该请求源自example.com

查看this part of the docs来确切了解为什么需要进行主机标头验证,并且您可能会更好地了解ALLOWED_HOSTS的目的

答案 2 :(得分:0)

感谢您的回答,我确实确认了它的正确性。我想补充一点,我也记得,可以通过将您的域添加到指向/etc/hosts的{​​{1}}来确认。如果127.0.0.1中未包含该域,则Django将引发调试错误,告诉您该域未添加到/etc/hosts