nginx:[警告] 0.0.0.0:80上的服务器名称“域”冲突,已忽略

我已经购买了一个域名,并将django应用程序部署到DigitalOcean,但是此错误不允许我使用该应用程序。如何忽略此错误?这是我的代码:

setting.py:

ALLOWED_HOSTS = ['blablabla.com','64.225.12.157']

nginx:

server {
    listen 80;
    server_name blablabla.com;

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

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
    }
}

默认nginx:

        root /var/www/blablabla.com;

        index index.html index.htm index.nginx-debian.html;

        server_name blablabla.com;

        location / {
                try_files $uri $uri/ =404;
        }
yangx456 回答:nginx:[警告] 0.0.0.0:80上的服务器名称“域”冲突,已忽略

您有两个问题(第二个主要是建议):


第一

您已经在两个位置定义了server_name伪指令-一个在默认http块中,一个在server块中。将引用放在默认的http块中,仅将其保留在server块中。另外,除非您知道自己在做什么,否则也从location /块中删除http指令,通常将位置 放在server块中该服务器的URL映射。将其放在http块中会全局进行映射,这会在调试时向下跟踪映射时引起麻烦。


第二:

Django使用WSGI协议,因此(在生产中)需要WSGI服务器来发送请求并从Django获取响应。大概您正在使用由UNIX域套接字的引用给出的一个:

/home/sammy/myproject/myproject.sock

因此,如果您的WSGI服务器(例如uWSGIgunicorn)在该套接字上侦听传入的请求,并通过该套接字发送响应,则需要告诉Nginx使用WSGI协议发送-从套接字检索数据,还传递相关的WSGI参数。例如:

upstream foobar {
    server unix:///home/sammy/myproject/myproject.sock;
}

server {
    server_name blablabla.com;
    ...
    ...
    location / {
        uwsgi_pass foobar;
        include /etc/nginx/uwsgi_params;
    }
}

您当前通过proxy_pass进行反向代理的配置可以使用,但是使用WSGI可以使您更接近底层使用的底层协议。

本文链接:https://www.f2er.com/2942420.html

大家都在问