我在部署 Django 应用程序时遇到问题。我在端口 8000 上使用 nohup 运行它,并使用带有 SSL 证书配置的 nginx,将域屏蔽到端口 80。
这是我的默认 Nginx 设置:
server {
listen 80;
listen 443 ssl;
server_name fmartns.dev;
ssl_certificate /etc/letsencrypt/live/fmartns.dev/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/fmartns.dev/privkey.pem;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/fmartns.dev;
}
location / {
include proxy_params;
proxy_pass http://3.82.145.23:8000; # Port where Django is running
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;
}
}
Django的settings.py配置:
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['fmartns.dev', '*']
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
CSRF_TRUSTED_ORIGINS = ['http://fmartns.dev']
错误日志:
DisallowedHost at /
Invalid HTTP_HOST header: 'fmartns.dev,fmartns.dev'. The domain name provided is not valid according to RFC 1034/1035.
关于如何解决这个问题有什么想法吗?我在 settings.py 和默认 nginx 设置中尝试了各种教程和配置。
由于您没有提供有关如何向 django 服务发出请求的任何信息,我猜测创建请求的事情是在发出请求时将
fmartns.dev,fmartns.dev
分配给 HOST
标头。
我建议您在浏览器或应用程序中检查请求的发送方式。有时,当您通过代码添加主机时,您可能会错误地添加无效的域并导致该错误。