Python Nginx和uWSGI:连接被拒绝,502网关错误
正在尝试在Ubuntu 13.10上设置Nginx和uWSGI 当我尝试访问该网站时,我得到的只是“502坏网关” 运行Python Nginx和uWSGI:连接被拒绝,502网关错误,python,nginx,uwsgi,Python,Nginx,Uwsgi,正在尝试在Ubuntu 13.10上设置Nginx和uWSGI 当我尝试访问该网站时,我得到的只是“502坏网关” 运行apt获取安装nginx-uwsgi-uwsgi-plugin-python3以安装nginx/uwsgi /etc/nginx/sites enabled/webpage.com: server { listen 80; server_name webpage.com; access_log /var/
apt获取安装nginx-uwsgi-uwsgi-plugin-python3
以安装nginx/uwsgi
/etc/nginx/sites enabled/webpage.com:
server {
listen 80;
server_name webpage.com;
access_log /var/log/nginx/webpage.com_access.log;
error_log /var/log/nginx/webpage.com_error.log;
location / {
uwsgi_pass /var/run/webpage.com.uwsgi.socket;
include uwsgi_params;
uwsgi_param Host $host;
uwsgi_param X-Real-IP $remote_addr;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
}
/etc/uwsgi/apps enabled/webpage.com
[uwsgi]
vhost = true
plugin = python3
socket = /tmp/webpage.com.sock
master = true
enable-threads = true
processes = 2
home = /var/www/webpage.com/env
wsgi-file = /var/www/webpage.com/env/hello.py
virtualenv = /var/www/webpage.com/env
chdir = /var/www/webpage.com/env
touch-reload = /var/www/webpage.com/reload
/var/log/nginx/webpage.com\u error.log
2014/01/17 16:28:58 [error] 25073#0: *13 connect() to unix:///var/run/webpage.com.uwsgi.socket failed (111: Connection refused) while connecting to upstream, client: 83.109.132.224, server: webpage.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///var/run/webpage.com.uwsgi.socket:", host: "webpage.com"
hello.py
只是一个简单的hello world应用程序
已经为此挣扎了几个小时。。。现在我需要帮助:)查看此处发布的配置文件,您将nginx中的套接字引用为:
uwsgi_pass /var/run/webpage.com.uwsgi.socket;
在uwsgi作为
socket = /tmp/webpage.com.sock
这并没有回答OP最初的问题,但我在nginx中遇到了相同的错误,
connect()tounix:///tmp/uwsgi_dev.sock 连接到上游时失败(13:权限被拒绝),我可以通过完全重新启动uwsgi进程来修复它。这是一个生产服务器,所以我对硬重启犹豫不决,但仅仅重新加载uwsgi进程并没有奏效。希望这能帮助别人 我意识到这与OP的问题没有任何关系,但由于这是Google中最热门的错误消息,我想指出是什么解决了我的问题
我正在遵循一个建议将uwsgi_通过127.0.0.1:9090的教程在uwsgi
配置中使用httpsocket=:9090设置的Python脚本的nginx
配置中进行编码。错误日志/var/log/nginx/error.log
显示了问题:2015/08/13 02:16:04[error]12566#12566:*2上游在从上游读取响应头时过早关闭了连接,客户端::1,服务器:~^(www\.)?(.+)$,请求:“GET/hello/HTTP/1.1”,上游:uwsgi://127.0.0.1:9090,主机:“kybyz”
浏览器,同时,他给了我502坏网关错误
有两种方法(至少)可以解决这个问题。第一个是将uwsgi
配置中的httpsocket
更改为简单的socket
(事实证明,这是推荐的;我只是没有仔细阅读)。但是,这将不再允许我通过将浏览器指向http://127.0.0.1:9090/
,因为脚本现在讲的是uwsgi
协议,而不是http
。因此,我改回了httpsocket
,并在nginx
配置中将uwsgi\u-pass
行更改为proxy\u-passhttp://127.0.0.1:9090;代码>通常这是一个文件权限问题,即nginx进程无法读取uwsgi套接字文件。检查套接字文件的权限及其父文件夹和祖父母文件夹等。只需一个命令即可完成此操作(假设您的nginx进程由用户运行nginx
):
对于我在AWS上的Python Django应用程序,它只是超载了
首先,我添加了更多的服务器,并注意到C实例(compute)比通用实例(M)要好,因为M实例在耗尽CPU点数后,有66%的CPU负载作为steal运行(由一些其他客户使用)
但在运行应用程序一段时间后(在短时间内,传入请求的数量增加了5倍),我还检查了数据库性能(RDS),它以100%的速度运行。我还将数据库实例大小从4个CPU增加到8个CPU,现在它可以正常工作。很可能您的uWSGI实例没有运行,请使用“ps aux”检查它并检查uWSGI日志,将/etc/uWSGI/apps enabled/webpage.com中的socket从/tmp/webpage.com.sock
更改为/var/run/webpage.com.uWSGI.socket
,但仍然得到502错误网关错误…套接字文件的文件权限为:-rw-r--1 www-data www-data www-data 0 Jan 17 14:32/var/run/webpage.com.uwsgi.socket
日志记录在我的第一篇文章中。@thomas你确定uwsgi正在运行吗?包括ps-ewwf | grep uwsgi
@Thomas so uwsgi未运行:)检查/var/log/uwsgi/…
中的uwsgi错误日志我在自己的教程中错过了该部分。。。但你们的回答帮助我找到了问题所在。谢谢
su nginx -c "[[ -r sockfile ]] && echo ok"