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


37

私は、ポート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つだけです。

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

$ 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はstock fedora 1.2.9です


まず、Fedoraのサポートされているバージョンに更新する必要があります。次に、もう一度試してください。それでも失敗する場合は、を確認してください/var/log/audit/audit.log
マイケルハンプトン

2
これはあまり役に立ちません。Fedora 18 引き続きサポートされており、たとえLinux許可システムでなくても、それ以降は完全に変更されていません。
フラン14年

はい...さらに4日間。
マイケルハンプトン

回答:


52

これはおそらく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を追加します。


1
それはそれでした、ありがとう!しかし、なぜそれほど情報が少ないのですか?私は...あまりにも、他の人は、SELinuxのではFedoraを使う推測
トランス

1
@frans:たくさんの情報がありますが、あなたはそれやそのアクセス方法と使用方法を知らないだけです。SELiuxが強制モードまたは許容モードの場合、すべての拒否は/var/log/audit.logに記録されます。情報とSELinuxポリシーのフィルタリング、理解、管理を可能にするツールがあります-fedora seliuxページと、ausearch、audit2why、audit2allowのマンページをご覧ください。
user9517はGoFundMonicaを14年

入手したらsemanage: command not found、でインストールできますyum install policycoreutils-python
mwfearnley

8080はhttp_port_tにリストされていませんが、それでも動作します。理由は何ですか?
MaxiWheat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.