Nginx

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

  • August 12, 2017

我在 Godaddy 中有域 mydomain.me 我將其設置為指向我在阿里雲 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://root@x.x.x.x:22/opt/miniconda3/envs/DjangoApps/bin/python3.6 -u /root/DjangoApps/mydomain_me/manage.py runserver 0.0.0.0:8080 
ssh://root@x.x.x.x: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。開始工作吧!

但 rhis 不是:

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 地址,而不是彈性的。

編輯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

所以之後

cat /tmp/daemon_app

問題在這裡:

可能另一個 uWSGI 實例正在同一地址(127.0.0.1:9000)上執行。

解決方案是使用埠 9000 終止程序並再次執行 uwsgi…

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

雖然,我不知道原因……任何提示都會很好。我昨天剛打開這個伺服器,除了我是網路新手。

看起來您的 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

引用自:https://serverfault.com/questions/868288