無效的 HTTP_HOST 標頭。根據 RFC 1034/1035,提供的域名無效
我的伺服器上出現 Invalid HTTP_HOST 標頭錯誤。我不明白它為什麼會發生以及如何解決它。每次發生後端停止工作,我必須重新啟動伺服器。
任何幫助將不勝感激。
提前致謝!
僅供參考:伺服器是 aws ec2;前端是有角度的,後端是帶有 gunicorn 的 django/drf。Angular 和 DRF 都部署在同一台伺服器上。
錯誤 0。如果我沒有在 nginx.conf 中設置 Host 變數,我會多次出現以下錯誤。無效的 HTTP_HOST 標頭:’/run/gunicorn.sock:’。根據 RFC 1034/1035,提供的域名無效。
如果我在 nginx.conf 中設置主機變數,則會出現以下錯誤。
錯誤 1. proxy_set_header 主機 $http_host;
無效的 HTTP_HOST 標頭:“127.0.0.1:8000,127.0.0.1:8000”。根據 RFC 1034/1035,提供的域名無效。
錯誤 2. proxy_set_header 主機 $host;
無效的 HTTP_HOST 標頭:“127.0.0.1:8000,127.0.0.1”。根據 RFC 1034/1035,提供的域名無效。
錯誤 3. proxy_set_header 主機 $server_name;
HTTP_HOST 標頭無效:“13.234.187.18,13.234.187.18:8000”。根據 RFC 1034/1035,提供的域名無效。
nginx.conf 如下。
server { listen 8000; server_name 13.234.187.18; location / { proxy_set_header Host $host; include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } }
我在 nginx 網站上找到了以下程式碼。它會解決這個問題嗎? http://nginx.org/en/docs/http/request_processing.html
server { listen 80; server_name ""; return 444; }
問題是您導致 Host 標頭被包含兩次。
proxy_set_header Host $host; include proxy_params;
查看
proxy_params
文件會告訴您它已經設置在那裡。再次設置它會導致兩個值用逗號連接。在該文件中,您將找到包含該文件時將使用的預設標頭。您無需在自己的配置中重複任何這些行。
ubuntu@vmtest-ubuntu2004:~$ cat /etc/nginx/proxy_params proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
您可以從配置中刪除您自己的附加資訊。