Nginx 和 Uwsgi 出现 502 错误,找不到套接字
502 error with Nginx and Uwsgi, socket not found
我关注了 this tutorial on how to set up Nginx and Uwsgi on an Ubuntu droplet to have it be internet facing. I've done all the necessary setup; running the command uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
from a terminal works fine. It causes my site to be served on the proper domain name, on port 5000 (http://who.would.win:5000)。这并不理想,因此我尝试将其设置为 A) 将其分离,而无需我手动 运行 命令,以及 B) 使其最后不需要端口 5000。
我按照教程的其余部分进行了操作,但未能使其正常工作。 Python 应用程序的源代码,运行良好,是 here。 运行离开我的分店。
/home/whowouldwin/myproject/myproject.ini
[uwsgi]
module = wsgi:app
logto = /var/log/uwsgi/%n.log
master = true
processes = 5
socket = myproject.sock
chmod-socket = 660
vacuum = true
die-on-term = true
/etc/systemd/system/myproject.服务
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=whowouldwin
Group=www-data
WorkingDirectory=/home/whowouldwin/myproject
Environment="PATH=/home/whowouldwin/myproject/myprojectenv/bin"
ExecStart=/home/whowouldwin/myproject/myprojectenv/bin/uwsgi --ini myproject.ini
[Install]
WantedBy=multi-user.target
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name 159.89.137.109;
location / {
include uwsgi_params;
uwsgi_pass unix:///home/whowouldwin/myproject/myproject.sock;
}
}
我正在尝试将我的原始 IP 地址 159.89.137.109 代理到域名 http://who.would.win。按原样访问 IP 地址时,我在 /var/log/nginx/error.log
中收到以下错误。它还在浏览器上显示 502 Bad Gateway 错误。
2018/06/03 01:32:55 [crit] 12288#12288: *7 connect() to unix:///home/whowouldwin/myproject/myproject.sock failed (2: No such file or directory) while connecting to upstream, client: XXXXXX, server: 159.89.137.109, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///home/whowouldwin/myproject/myproject.sock:", host: "159.89.137.109"
当我通过 http://who.would.win 访问它时,我没有收到此错误。它显示的是通用 "Welcome to Ngnix!" 页面,并且没有错误,尽管视图在 /var/log/nginx/access.log
中记录为 200。
您当前的配置(至少)有两个问题:
1) 在您的 nginx 配置中,您设置了 server_name 159.89.137.109;
,这样 nginx 将仅在以 http://159.89.137.109
访问时为您的网站提供服务。将其更改为 server_name who.would.win
应该可以解决这个问题(或将其设为默认服务器条目,请参阅 /etc/nginx/sites-enabled/default
)
2) 在您的 uwsgi ini 文件中,尝试将套接字路径设置为绝对路径,例如 socket = /home/whowouldwin/myproject/myproject.sock
我关注了 this tutorial on how to set up Nginx and Uwsgi on an Ubuntu droplet to have it be internet facing. I've done all the necessary setup; running the command uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
from a terminal works fine. It causes my site to be served on the proper domain name, on port 5000 (http://who.would.win:5000)。这并不理想,因此我尝试将其设置为 A) 将其分离,而无需我手动 运行 命令,以及 B) 使其最后不需要端口 5000。
我按照教程的其余部分进行了操作,但未能使其正常工作。 Python 应用程序的源代码,运行良好,是 here。 运行离开我的分店。
/home/whowouldwin/myproject/myproject.ini
[uwsgi]
module = wsgi:app
logto = /var/log/uwsgi/%n.log
master = true
processes = 5
socket = myproject.sock
chmod-socket = 660
vacuum = true
die-on-term = true
/etc/systemd/system/myproject.服务
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=whowouldwin
Group=www-data
WorkingDirectory=/home/whowouldwin/myproject
Environment="PATH=/home/whowouldwin/myproject/myprojectenv/bin"
ExecStart=/home/whowouldwin/myproject/myprojectenv/bin/uwsgi --ini myproject.ini
[Install]
WantedBy=multi-user.target
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name 159.89.137.109;
location / {
include uwsgi_params;
uwsgi_pass unix:///home/whowouldwin/myproject/myproject.sock;
}
}
我正在尝试将我的原始 IP 地址 159.89.137.109 代理到域名 http://who.would.win。按原样访问 IP 地址时,我在 /var/log/nginx/error.log
中收到以下错误。它还在浏览器上显示 502 Bad Gateway 错误。
2018/06/03 01:32:55 [crit] 12288#12288: *7 connect() to unix:///home/whowouldwin/myproject/myproject.sock failed (2: No such file or directory) while connecting to upstream, client: XXXXXX, server: 159.89.137.109, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///home/whowouldwin/myproject/myproject.sock:", host: "159.89.137.109"
当我通过 http://who.would.win 访问它时,我没有收到此错误。它显示的是通用 "Welcome to Ngnix!" 页面,并且没有错误,尽管视图在 /var/log/nginx/access.log
中记录为 200。
您当前的配置(至少)有两个问题:
1) 在您的 nginx 配置中,您设置了 server_name 159.89.137.109;
,这样 nginx 将仅在以 http://159.89.137.109
访问时为您的网站提供服务。将其更改为 server_name who.would.win
应该可以解决这个问题(或将其设为默认服务器条目,请参阅 /etc/nginx/sites-enabled/default
)
2) 在您的 uwsgi ini 文件中,尝试将套接字路径设置为绝对路径,例如 socket = /home/whowouldwin/myproject/myproject.sock