我总是通过Django中的环境变量设置ALLOWED_HOSTS
。在开发.env
中,我总是设置ALLOWED_HOSTS=.localhost,.127.0.0.1
,在生产环境中ALLOWED_HOSTS=mydomain.dom,my_ip_address
现在,我现在已经熟悉Docker,问题是ALLOWED_HOSTS
在生产中的价值是什么。它应该保留为本地主机,因为我知道本地主机将引用主机容器,还是应将其设置为我的域。我正在使用Nginx进行反向代理转发请求。
答案 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