繁体   English   中英

Nginx和uWSGI:连接被拒绝,502 Bad Gateway错误

[英]Nginx and uWSGI: Connection refused and 502 Bad Gateway error

试图在Ubuntu 13.10上设置Nginx和uWSGI。

当我尝试访问该网站时,我得到的只是“502 Bad Gateway”。

Ran apt-get install 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_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的问题没有任何关系,但由于这是Google中该错误消息的最大打击,我想说明是什么解决了我的问题。

我正在按照一个教程,建议把uwsgi_pass 127.0.0.1:9090; 进入使用http-socket = :9090uwsgi配置中设置的Python脚本的nginx配置。 错误日志/var/log/nginx/error.log显示问题: 2015/08/13 02:16:04 [error] 12566#12566: *2 upstream prematurely closed connection while reading response header from upstream, client: ::1, server: ~^(www\\.)?(.+)$, request: "GET /hello/ HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: "kybyz"同时,浏览器给了我502 Bad Gateway错误。

有两种方法(至少)可以修复它。 第一个是将uwsgi配置中的http-socket更改为socket (因为,事实证明, 教程推荐;我只是没有仔细阅读它)。 但是,这将不再允许我通过将浏览器指向http://127.0.0.1:9090/直接测试脚本,因为脚本现在uwsgi协议而不是http 所以我改回了http-socket并在nginx配置中将uwsgi_pass行更改为proxy_pass http://127.0.0.1:9090;

这不符合OP的原始问题,但我在nginx中遇到了同样的错误, connect() to unix:///tmp/uwsgi_dev.sock failed (13: Permission denied) while connecting to upstream ,我能够通过完全重启uwsgi进程来修复它。 它是一个生产服务器,所以我犹豫不决重做,但只是重新加载uwsgi进程并没有成功。 希望能帮助别人。

通常这是文件权限问题,即nginx进程无法读取uwsgi套接字文件。 检查套接字文件的权限及其父文件夹及其祖父文件夹等。您可以使用一个命令执行此操作(假设您的nginx进程由用户nginx运行):

su nginx -c "[[ -r sockfile ]] && echo ok"

对于我在AWS上的Python Django应用程序,它只是过载了。

首先,我添加了更多的服务器,并注意到C-instances(计算)优于通用(M)实例,因为在运行CPU之后,M -instances有66%的CPU负载作为窃取运行(由其他一些客户使用)学分。

但是在运行应用程序一段时间之后(并且在短时间内传入请求的数量增加了5倍之后),我还检查了数据库性能(RDS),并且它运行在100%。 我还将数据库实例大小从4 CPU增加到8 CPU,现在它再次正常工作而没有错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM