nginx非root用户使用1024以下端口
nginx应用需要使用80和443端口,但是非root用户,nginx -t 检查文件是会报错:
[majd@majd nginx]$ /home/majd/nginx/sbin/nginx -t
nginx: the configuration file /home/majd/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] bind() to 0.0.0.0:443 failed (13: Permission denied)
nginx: configuration file /home/majd/nginx/conf/nginx.conf test failed
解决办法:
在root用户下输入命令:setcap cap_net_bind_service=+eip [nginx命令路径],看到nginx命令会变成红色,说明成功:
[root@majd ~]# setcap cap_net_bind_service=+eip /home/majd/nginx/sbin/nginx
[root@majd ~]#
[root@majd ~]# ls /home/majd/nginx/sbin
nginx
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E9SOA5N7-1637657726472)(C:\Users\19398\AppData\Roaming\Typora\typora-user-images\image-20211123165003087.png)]
然后使用普通用户检查:
[majd@majd nginx]$ /home/majd/nginx/sbin/nginx -t
Enter PEM pass phrase:
nginx: the configuration file /home/majd/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /home/majd/nginx/conf/nginx.conf test is successful
成功!可以启动nginx了:
[majd@majd nginx]$ /home/majd/nginx/sbin/nginx
Enter PEM pass phrase:
[majd@majd nginx]$ netstat -antp | grep LIST
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
tcp6 0 0 :::111 :::* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::10000 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:25 :::* LISTEN -
取消普通用户使用1024以下端口方式:
setcap -r [nginx命令路径]:
[root@majd ~]# setcap -r /home/majd/nginx/sbin/nginx