(13: 権限が拒否されました) アップストリームへの接続中:[nginx] 質問する

(13: 権限が拒否されました) アップストリームへの接続中:[nginx] 質問する

私はNginxとGunicornを使用してDjangoプロジェクトを構成する作業を行っています。

Nginx サーバーのポートにアクセスしているときにgunicorn mysite.wsgi:application --bind=127.0.0.1:8001、エラー ログ ファイルに次のエラーが表示されます。

2014/05/30 11:59:42 [crit] 4075#0: *6 connect() to 127.0.0.1:8001 が失敗しました (13: 権限が拒否されました)。アップストリームへの接続中、クライアント: 127.0.0.1、サーバー: localhost、リクエスト: "GET / HTTP/1.1"、アップストリーム: "http://127.0.0.1:8001/"、ホスト: "localhost:8080"

nginx.conf以下は私のファイルの内容です。

server {
    listen 8080;
    server_name localhost;
    access_log  /var/log/nginx/example.log;
    error_log /var/log/nginx/example.error.log;

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
    }
}

HTML ページで、次のようになります502 Bad Gateway

私はどんな間違いを犯しているのでしょうか?

ベストアンサー1

免責事項

これを実行する前に、ユースケースにセキュリティ上の影響がないことを確認してください。

答え

Fedora 20、Nginx、Node.js、Ghost (ブログ) を動作させるときに、同様の問題が発生しました。私の問題はSELinuxが原因であることが判明しました。

これで問題は解決するはずです:

setsebool -P httpd_can_network_connect 1

詳細

SELinux ログでエラーを確認しました:

sudo cat /var/log/audit/audit.log | grep nginx | grep denied

そして、次のコマンドを実行すると問題が解決することがわかりました。

sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp

オプション 2 (おそらくより安全)

setsebool -P httpd_can_network_relay 1

https://security.stackexchange.com/questions/152358/difference-between-selinux-booleans-httpd-can-network-relay-and-httpd-can-net

参考文献

http://blog.frag-gustav.de/2013/07/21/nginx-selinux-me-mad/
https://wiki.gentoo.org/wiki/SELinux/Tutorials/SELinux_permission_denial_details の参照先
http://wiki.gentoo.org/wiki/SELinux/Tutorials/ネットワークポートラベルの管理

おすすめ記事