我需要帮助找出此权限被拒绝错误的根本原因。 nginx需要什么权限?为什么这么复杂?
答案 0 :(得分:21)
套接字API bind()到一个小于1024的端口,如你提到的标题为80,需要root访问权限。
这里是“Bind to ports less than 1024 without root access”
另一种更简单的方法是以root身份运行nginx。
答案 1 :(得分:7)
如果你使用大于1024的端口和root权限,那么仍然会遇到这个问题,这可能是由SELinux
引起的:
在segange端口
中检查此端口,例如8024sudo semanage port -l | grep http_port_t
如果端口列表没有8024,则将其添加到segange端口
sudo semanage port -a -t http_port_t -p tcp 8024
有时您的SELinux为disabled
,您需要首先enforcing
。通过
$ 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
下一步和密码