ソフトウェア

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

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のエラーログ確認方法については、別記事を参照。

コチラもオススメ

KRSW

駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

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

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

-ソフトウェア
-, , ,

Translate »

Copyright© ITips , 2020 All Rights Reserved.