一、解决Nginx报nginx: [emerg] bind() to 0.0.0.0:8006 failed (13: Permission denied)
- 报错信息:
nginx: [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)
其中XXXX就是端口号。 - 更改nginx启动端口,报错,权限被拒绝
解决方案
有两种方案
方案1、修改selinux 级别
- 修改selinux 为关闭(停用)
- 编辑
/etc/selinux/config
文件,设置SELINUX=disabled
。之后将系统重启一下
# 如下命令查询selinux状态
# enforcing - 拒绝 SELinux security policy is enforced.
# permissive - 执行 SELinux prints warnings instead of enforcing.
# disabled - 停用 No SELinux policy is loaded.
getenforce
方案二、更新受控端口
Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听。为叙述方便我们称之为受控端口。
1、查看HTTP 受控端口
# semanage port -l | grep http_port_t |
默认http的开放端口有:80、81、443等8个
由于nginx默认在80端口监听因此启动正常
如上,我修改nginx启动端口为 8006 不在上面的范围内,所有报权限错误
我们只需把我们想要启动的端口加到
http_port_t
即可,如下# 添加8006端口
semanage port -a -t http_port_t -p tcp 8006修改完,重启nginx即可
2、安装使用semanage命令
- semanage在CentOS上是默认不安装的
yum install -y semanage
yum provides semanage
yum -y install policycoreutils-python.x86_64