[英]ALLOWED_HOSTS and Django
我試圖在生產服務器上啟動一個 Django 1.11 項目。 當我啟動應用程序時,我看到以下錯誤:
無效的 HTTP_HOST 標頭:“bla-bla-bla.bla-bla-vla.com”。 您可能需要將 u'bla-bla-bla.bla-bla-vla.com' 添加到 ALLOWED_HOSTS**
但是,主機"bla-bla-bla.bla-bla-vla.com"
已添加到settings.py
中的ALLOWED_HOSTS
中!
我試圖將DEBUG
從False
切換到True
並返回。 那么它工作正常。
我究竟做錯了什么?
如果 Django 說:
無效的 HTTP_HOST 標頭: 'bla-bla-bla.bla-bla-vla.com' 。 您可能需要將 ' bla-bla-bla.bla-bla-vla.com ' 添加到 ALLOWED_HOSTS
那么您需要將bla-bla-bla.bla-bla-vla.com逐字(或使用點作為通配符)添加到ALLOWED_HOSTS
( docs )。
然后重新加載 Apache2(不重新啟動,重新加載)以驗證更改是否已應用。
正如我在評論中所說:
第一個選項:
您必須在 settings.py 文件中寫入: ALLOWED_HOSTS=["bla-bla.com", "localhost", "127.0.0.1"]
然后,您只需使用以下命令重新啟動服務器:
sudo reboot
或者輕松重新加載或重新啟動 apache2 服務
service apache2 reload
或service apache2 restart
它現在應該可以工作了;)
ALLOWED_HOSTS = [
'127.0.0.1',
'localhost',
'bla-bla',
]
此外,如果您在localhost
和nginx
服務器或apache2
服務器之間有類似gunicorn
的服務。 記住也要重新啟動它。
sudo systemctl restart gunicorn
我有同樣的問題使用編輯 settings.py 修復
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
然后運行
python manage.py runserver 0.0.0.0:8000
NGINX
遇到了同樣的錯誤。 如果一個人正在開發並且仍然port 80 only (no 443 yet)
進行測試,則可能需要直接從django settings.py
本身暫時停用任何strict HTTPS
設置。 例如評論:
# #### strict https settings
# #### UNCOMMENT at production
# SECURE_REFERRER_POLICY = "same-origin"
# SECURE_BROWSER_XSS_FILTER = True
# SESSION_COOKIE_SECURE = True
# CSRF_COOKIE_SECURE = True
# CSRF_COOKIE_HTTPONLY = True
# SECURE_HSTS_SECONDS = 15780000
# SECURE_CONTENT_TYPE_NOSNIFF = True
# SECURE_HSTS_INCLUDE_SUBDOMAINS = True
# SECURE_HSTS_PRELOAD = True
# SECURE_SSL_REDIRECT = True
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
#
#
# #PREPEND_WWW = True
# #BASE_URL=["https://www.example.com"]
錯誤消失。 然后,當port 443
nginx 服務器塊設置也完成時,您可以取消注釋回strict HTTPS
設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.