nginx:没有权限绑定端口8090,但绑定到80和8080

我正在努力与一些奇怪的权限相关的行为:当我configurationnginx听8080端口一切都按预期工作,但是当我使用任何其他端口时,我得到像

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

我不知道在哪里看,所以我不知道configuration的哪些部分可能会有趣。

在nginx.conf中configurationnginx运行nginx:

 user nginx; 

另外用户nginx在另一个组“git”

在站点configuration我试图听这样:

 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的监听器。

当我开始一些其他服务,例如一个SimpleHTTPServer在端口8090等作为非root的一切工作正常:

 $ 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只允许绑定到列出的端口。 解决方法是将您想要绑定的端口添加到列表中

 semanage port -a -t http_port_t -p tcp 8090 

将添加端口8090到列表中。