私はいくつかの奇妙なアクセス許可関連の動作に苦労しています:ポート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です
これはおそらく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を追加します。