godaddy dns + aliyun host - django app,uwsgi,nginx - 显示“502 Bad Gateway”

godaddy dns + aliyun host - django app,uwsgi,nginx - 显示“502 Bad Gateway”

我在 godaddy 上有一个域名 mydomain.me,我将它设置为指向我在 aliyun ecs 中的 ip

在我的 diango 设置中我有:

ALLOWED_HOSTS = [".mydomain.me","x.x.x.x"] 

在 /etc/nginx/sites-avaiable/Django 我有

upstream django {
    server unix:/tmp/uwsgi.sock;
}

server {
    listen x.x.x.x:80;
    server_name .mydomain.me;
    location /static/ {
                include uwsgi_params;
                alias /root/DjangoApps/mydomain_me/public;
    }

    location /  {
                include uwsgi_params;
                uwsgi_pass django;

    }
}

**编辑:**我为其创建了符号链接 /etc/nginx/sites-enabled/Django,并删除了默认符号链接。

在 uwsgi.ini 中我有

[uwsgi]
chdir = /root/DjangoApps/mydomain_me
module = mydomain_me.wsgi:application
processes = 1
threads = 1
stats = 127.0.0.1:9000
daemonize = /tmp/daemon_app
pidfile = /tmp/uwsgi.pid
chmod-socket = 777
master = True
vaccum = True
socket = /tmp/uwsgi.sock

我使用 pycharm 运行如下:

ssh://[email protected]:22/opt/miniconda3/envs/DjangoApps/bin/python3.6 -u /root/DjangoApps/mydomain_me/manage.py runserver 0.0.0.0:8080 
ssh://[email protected]:22:bash 

root@mydomain:~/DjangoApps/mydomain_me# . activate DjangoApps 
(DjangoApps) root@mydomain:~/DjangoApps/mydomain_me# uwsgi uwsgi.ini 
(DjangoApps) root@mydomain:~/DjangoApps/mydomain_me# service nginx restart 

还行吧:

http://mydomain.me:8080

有效!

恭喜您拥有第一个由 Django 支持的页面。

接下来,通过运行 python manage.py startapp [app_label] 启动您的第一个应用程序。

您之所以看到此消息,是因为您的 Django 设置文件中的 DEBUG = True,但您尚未配置任何 URL。开始工作吧!

但事实并非如此:

http://mydomain.me

输出:

欢迎使用 nginx!

为什么它不工作?

编辑

现在 mydomain.me 给出输出:

502错误的网关

nginx/1.10.3(Ubuntu)

这是我的授权规则:

出站:

Allow   
Custom TCP  
8080/8080 and 80/80 and 22/22 and 3389/3389
Address Field Access    
0.0.0.0/0

入站:

none

我应该做些更改吗?另外,我的域名指向的是互联网 IP 地址,而不是弹性 IP 地址。

编辑1:cat /var/log/nginx/error.log 给我输出:

> 2017/08/13 03:00:34 [error] 19132#19132: *11 connect() to
> unix:/tmp/uwsgi.sock failed (111: Connection refused) while connecting
> to upstream, client: x.x.x.x, server: mydomain.me, request:
> "GET /favicon.ico HTTP/1.1", upstream:
> "uwsgi://unix:/tmp/uwsgi.sock:", host: "mydomain.me", referrer:
> "http://mydomain.me/"

并且文件 /tmp/uwsgi.sock 存在,但是当:

cat /tmp/uwsgi.sock

它说:

> cat: /tmp/uwsgi.sock: No such device or address

答案1

您的 Nginx 配置似乎未链接/包含。如果它位于名为的目录中sites-available,则需要从符号链接到它sites-enabled。编辑/etc/nginx/nginx.conf并检查它从哪些目录加载配置文件。

符号链接名为的配置的示例default.conf

cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/default.conf
sudo service nginx restart

答案2

因此之后

cat /tmp/daemon_app

问题出在这里:

可能另一个 uWSGI 实例正在同一地址 (127.0.0.1:9000) 上运行。

解决方案是终止使用端口 9000 的进程并再次运行 uwsgi...

sudo fuser -k 9000/tcp && uwsgi uwsgi.ini

不过,我不知道原因...任何提示都很好。我昨天才打开这个服务器,而且我对网络一窍不通。

相关内容