(ubuntu)nginx:[emerg] bind()到0.0.0.0:80失败(13:权限被拒绝)

时间:2013-08-28 05:44:14

标签: nginx permissions bind denied

我需要帮助找出此权限被拒绝错误的根本原因。 nginx需要什么权限?为什么这么复杂?

5 个答案:

答案 0 :(得分:21)

套接字API bind()到一个小于1024的端口,如你提到的标题为80,需要root访问权限。

这里是“Bind to ports less than 1024 without root access

另一种更简单的方法是以root身份运行nginx。

答案 1 :(得分:7)

如果你使用大于1024的端口和root权限,那么仍然会遇到这个问题,这可能是由SELinux引起的:

在segange端口

中检查此端口,例如8024
sudo semanage port -l | grep http_port_t

如果端口列表没有8024,则将其添加到segange端口

sudo semanage port -a -t http_port_t  -p tcp 8024

2017.12.22更新

有时您的SELinux为disabled,您需要首先enforcing。通过

检查SELinux的状态

$ sestatus

更多步骤可以阅读这篇精彩的文章:https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-basic-concepts

答案 2 :(得分:2)

如果在运行“nginx -t”后看到这个消息,你就没有以root身份运行premission“sudo nginx -t”

答案 3 :(得分:1)

最好的解决方案是:

1)将用户添加到sudoers(我的用户是prod)

usermod -aG sudo prod

2)在马戏团内部(进程管理器)在nginx可执行文件之前追加sudo,我的看起来像这样:

[watcher:nginx]
cmd = sudo /usr/sbin/nginx
args = -c /home/t/Projects/x_b_11/etc/nginx.conf -p /home/t/Projects/x_b_11

3)最后将行添加到文件/ etc / sudoers中(我的用户是prod)。这一行避免了错误(sudo:没有tty存在且没有指定askpass程序)。可能需要重启会话(重启)。享受。

prod ALL = NOPASSWD: /usr/sbin/nginx

答案 4 :(得分:0)

nginx需要root访问权限。请使用

  

sudo nginx

下一步和密码