ソフトウェア

Nginxで「13: Permission denied」が出てポートフォワードできない

Oracle Cloudに設定したNginxで、HTTPアクセスが来た場合にWEBアプリが起動しているポートへポートフォワードしたい。
/etc/nginx/nginx.conf のlocationにproxy設定をしてNginxを再起動したが、「temporarily unavailable」。

エラーログを確認すると以下のメッセージ。

2020/07/22 03:51:58 [crit] 1765#0: 
*1 connect() to 127.0.0.1:5000 failed 
(13: Permission denied) 
while connecting to upstream, client:x.x.x.x, server: _, request: "GET / HTTP/1.1", 
upstream: "http://127.0.0.1:5000/", host: "x.x.x.x"

今回はNginxで「13: Permission denied」が出てポートフォワードできない場合の対処方法を紹介する。


原因はNginxではなくLinuxにある

いきなりだが、原因はNginxではないLinuxにある。

例えば有名な Boolean の1つとして、「httpd_can_network_connect」があります。これは httpd がCGIやPHP等のスクリプトを使って database や ldap , smtp等のプロトコルを使って外部ネットワークアクセスをする際に必要となる許可ルールが一式揃っており、httpd_can_network_connect を ON にするとそれら一式が全て許可される、というものです。
参考:【SELinux】Boolean の仕組みと getsebool / setsebool コマンドの使い方│SEの道標

設定するには以下のコマンドを実行する。

sudo setsebool httpd_can_network_connect on -P

念の為Nginxも再起動。

sudo systemctl restart nginx

すると「13: Permission denied」が解消されて、Nginx側も「temporarily unavailable」ではなくWEBアプリの画面を表示できる。



Nginxのエラーログ確認方法については、別記事を参照。

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

役に立ったらシェアしてくれると励みになります。

にほんブログ村 IT技術ブログへ

-ソフトウェア
-, , ,

Translate »

© 2021 ITips