1. ホーム
  2. django

[解決済み] (13: Permission denied) 上流:[nginx]に接続中。

2022-03-14 15:02:58

質問

NginxとGunicornでDjangoプロジェクトを構成する作業をしています。

自分のポートにアクセスしている間 gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 で、エラーログファイルに以下のようなエラーが表示されます。

2014/05/30 11:59:42 [crit] 4075#0: *6 127.0.0.1:8001 への connect() に失敗 (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream.NETWORK.NETWORK.NETWORK.NETWORK.NETWORK: "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 .

私はどんな間違いをしているのだろう?

どうすればいいですか?

免責事項

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

回答

Fedora 20、Nginx、Node.js、Ghost (blog)を動作させるのに、同様の問題がありました。私の問題は、以下の原因であることがわかりました。 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/Where_to_find_SELinux_permission_denial_details
http://wiki.gentoo.org/wiki/SELinux/Tutorials/Managing_network_port_labels