使用 uwsgi 和 nginx 部署 Django,uwsgi 可以,但 nginx 不工作

Deploying Django with uwsgi and nginx, uwsgi ok but nginx not working

我正在尝试 运行 我的网站,当我 运行

uwsgi --socket 0.0.0.0:8080 --protocol=http --chdir /opt/virtualenv/landivarpj/ --wsgi-file /opt/virtualenv/landivarpj/landivarpj/wsgi.py 

我可以正常访问 192.xxx.xxx.xxx:8080 并且出现我的测试文本, 但是如果我尝试去 trought 192.xxx.xxx.xxx 我只会得到一个 nginx 欢迎页面, 如果我尝试进入我的域 www.xxxxxxxx.com,那么它根本不起作用。

在我的项目文件夹中(opt/virtualenv/landivarpj)我有一个 uswgi_params 文件

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

然后在 (opt/virtualenv/landivarpj/landivarpj) 中 wsgi.py 是

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "landivarpj.settings")

application = get_wsgi_application()

在etc/nginx/sites-available中有drlandivar.conf

upstream django {
    server 192.xxx.xxx.xxx:8080; # for a web port socket (we'll use this first)
}

server {
    listen      80;
    server_name drlandivar.com www.drlandivar.com;
    charset     utf-8;

    client_max_body_size 75M;   # adjust to taste

    location /media  {
        alias /opt/virtualenv/landivarpj/media;  
    }

    location /static {
        alias /opt/virtualenv/landivarpj/static; 
    }

    location / {
        uwsgi_pass  django;
        include     /opt/virtualenv/landivarpj/uwsgi_params; 
    }
}

站点可用和站点启用已关联

我做错了什么为什么它在 192.xxx.xxx.xxx:8080 上工作 但不是 trought 域和 nginx

***** 根据 nginx/availables-site/drlandivar.conf

推荐的新编辑
upstream django {
    server 192.254.145.207:8080;
}

server {
    listen      80;
    server_name drlandivar.com www.drlandivar.com;
    charset     utf-8;

    client_max_body_size 75M;   # adjust to taste

    location /media  {
        alias /opt/virtualenv/landivarpj/media;  
    }

    location /static {
        alias /opt/virtualenv/landivarpj/static; 
    }

    location / {
        proxy_pass  http://django;
    }
}

它仍然给我同样的问题页面只加载 trought 192.xxx.xxx.xxx:8080 不 trought drlandivar.com 请帮忙

您需要 proxy_pass。以下配置应该可以解决问题。

upstream django {
    server 192.254.145.207:8080;
}

server {

    ...

    location / {
        proxy_pass  http://django;
    }
}

将您的示例与我的一个工作示例进行比较,有一点很突出。尝试

...
location / {
    include uwsgi_params;
    proxy_pass http://django;
}

--logto /var/log/uwsgi/uwsgi.log 添加到您的 uwsgi 调用(在创建 /var/log/uswgi 并使其可写到 uwsgi 进程之后)可能会带来一些额外的启发。