web-dev-qa-db-ja.com

nginx:ポート8090をバインドする権限はありませんが、80および8080にバインドします

私はいくつかの奇妙なアクセス許可関連の動作に苦労しています:ポート8080をリッスンするようにnginxを構成すると、すべてが期待どおりに機能しますが、他のポートを使用すると、次のようになります

2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)

/var/log/nginx/error.log

どこを見ればよいのかわからないので、構成のどの部分が興味深いかわからない。

nginx.confでnginxはnginxとして実行するように構成されています。

user  nginx;

また、ユーザーnginxは別のグループ「git」に属しています

site-configで、次のように聞いてみました。

server {
    listen 8090; #does not work
    #listen 8080; #works
    #listen 9090; #does not work
    #listen 9090 default; #does not work neighter
    #listen 80; #works!
    server_name <some IP>;
    ...
}

ポート443を提供するリスナーが1つだけあります。

他のサービスを開始したときルート以外のすべてが正常に機能するため、ポート8090などでSimpleHTTPServerを使用します。

$ python -m SimpleHTTPServer 8090
Serving HTTP on 0.0.0.0 port 8090 ...
localhost.localdomain - - [10/Jan/2014 09:34:19] "GET / HTTP/1.1" 200 -

一般的にアクセス許可が拒否される理由は何ですか?

システムはFedora 18ですngnixは在庫Fedora 1.2.9です

39
frans

これはおそらくSELinuxに関連しています

semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

上記の出力からわかるように、強制モードのSELinuxでのhttpは、リストされたポートへのバインドのみが許可されています。解決策は、バインドしたいポートをリストに追加することです

semanage port -a -t http_port_t  -p tcp 8090

リストにポート8090を追加します。

59
user9517