Nginx: [emerg] bind() to 0.0.0.0:xxxx failed (13: Permission denied)

安装nginx后,启动的时候报错nginx: [emerg] bind() to 0.0.0.0:8100failed (13: Permission denied)。从字面意思上来说,这是权限不足。但出现这种错误可能有多种原因导致的

端口小于1024时
当端口小于1024时,且运行的账号不是root就会报这个错误。
解决办法是修改nginx的配置文件,以user root;启动

端口大于1024时
检查一下selinux是否开启了。如果开启了关闭selinux试试

setenforce 0
如果关了selinux能正常说明端口可能与selinux的端口冲突了或http_port_t中没有开放对应的端口

1
2
3
4
5
6
7
8
geneve_port_t                  tcp      6080
#发现8100是geneve_port_t 的端口,要么修改自己的端口,要么修改geneve_port_t的端口,然后再把8100添加到http_port_t。附senamage 端口操作命令
#senamage 端口 删除 类型 [] 协议 TCP/UDP 端口
semanage port -d -t geneve_port_t -p tcp 6081
#senamage 端口 增加 类型 [] 协议 TCP/UDP 端口
semanage port -a -t http_port_t -p tcp 6080
#senamage 端口 修改 类型 [] 协议 TCP/UDP 端口
semanage port -m -t geneve_port_t -p tcp 6081