Django 上的 HTTP_HOST 无效(EC2 Aws Ubuntu)

问题描述 投票:0回答:1

我在部署 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 ubuntu nginx amazon-ec2
1个回答
0
投票

由于您没有提供有关如何向 django 服务发出请求的任何信息,我猜测创建请求的事情是在发出请求时将

fmartns.dev,fmartns.dev
分配给
HOST
标头。

我建议您在浏览器或应用程序中检查请求的发送方式。有时,当您通过代码添加主机时,您可能会错误地添加无效的域并导致该错误。

© www.soinside.com 2019 - 2024. All rights reserved.