web-dev-qa-db-ja.com

NginxとuWSGI:接続が拒否され、502 Bad Gatewayエラー

Ubuntu 13.10でNginxとuWSGIをセットアップしようとしています。

ウェブサイトにアクセスしようとすると、「502 Bad Gateway」だけが表示されます。

ラン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アプリです。

数時間これに苦労してきました...今私は助けが必要です:)

11
user1608728

ここに投稿された設定ファイルを見て、nginxのソケットを次のように参照します。

uwsgi_pass      /var/run/webpage.com.uwsgi.socket;

そしてuwsgiでは

socket = /tmp/webpage.com.sock
7
Paolo Casciello

これはOPの問題とは何の関係もないことを理解していますが、これはGoogleのエラーメッセージのトップヒットであるため、問題を修正した原因を書き留めておきたいと思います。

nginx構成でセットアップされたPythonスクリプト用にuwsgi構成に_uwsgi_pass 127.0.0.1:9090;_を入れることを勧めるチュートリアルに従っていた_http-socket = :9090_を使用すると、エラーログ_/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エラーを返していました。

それを修正するには(少なくとも)2つの方法がありました。 1つ目は、uwsgi構成の_http-socket_を単にsocketに変更することでした(結局のところ、 tutorial を推奨しました。十分に注意してお読みください)。ただし、スクリプトがuwsgiではなくhttpプロトコルを使用するようになったため、ブラウザーで_http://127.0.0.1:9090/_をポイントしてスクリプトを直接テストすることはできなくなりました。そのため、_http-socket_に戻し、nginx構成で_uwsgi_pass_行を_proxy_pass http://127.0.0.1:9090;_に変更しました。

3
jcomeau_ictx

これはOPの元の質問には答えませんが、nginxで同じエラーconnect() to unix:///tmp/uwsgi_dev.sock failed (13: Permission denied) while connecting to upstreamがあり、uwsgiプロセスを完全に再起動するだけで修正できました。これは本番サーバーなので、ハードリスタートを行うのをためらっていましたが、uwsgiプロセスをリロードするだけではうまくいきませんでした。それが誰かを助けることを願っています。

1
jstaab

通常、これはファイル権限の問題です。つまり、uwsgiソケットファイルはnginxプロセスで読み取ることができません。ソケットファイルのアクセス許可とその親フォルダーおよびその祖父母フォルダーなどを確認します。これは、1つのコマンドで実行できます(nginxプロセスがユーザーnginxで実行されていると仮定します)。

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

Python Djangoアプリの場合、オーバーロードされます。

最初にサーバーを追加して、Cインスタンス(計算)が汎用(M)インスタンスよりも優れていることに気付きました。クレジット。

しかし、しばらくアプリを実行した後(および着信要求の数が短期間に5倍に増加した後)、データベースパフォーマンス(RDS)も確認したところ、100%で実行されていました。また、データベースインスタンスのサイズを4 CPUから8 CPUに増やしましたが、エラーなしで再び機能します。

0
PHZ.fi-Pharazon