当通过 ddns 域访问时,nginx 抛出错误请求 400

nginx throws bad request 400 when accessed through ddns domain

通过本地 Web 服务器 IP 访问时工作完美,但通过 NOIP 主机名访问时抛出 400 错误。

对于上下文,路由器配置为将请求转发到该端口上的 Web 服务器。

这是 nginx 配置文件:

server {
    listen 80;
    server_name 192.168.1.64;
    #server_name example.ddns.net;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/projectdir;
    }

    location / {
       include proxy_params;
      # proxy_pass http://example.ddns.net;
       proxy_pass http://unix:/run/gunicorn.sock;
    }
}

我尝试添加主题标签所在的行,但无济于事。

假设您的服务器配置正确,请使用以下内容在 Django 项目中编辑您的 setting.py:

ALLOWED_HOSTS = ["192.168.1.64"]

为了将来参考,在我的例子中,虽然我 ALLOWED_HOSTS 配置正确,但问题是在更改 django 设置文件后重新加载 gunicorn/nginx。下面一行解决了它:

sudo systemctl restart gunicorn
sudo systemctl restart nginx

信用到期,Iain Shelvington and Gaëtan GR 的评论是正确的,根本问题是 ALLOWED_HOSTS 设置(在我的情况下,直到 gunicorn/nginx 重启完成后才应用。