SELinux 开启导致 Nginx 启动失败

今天在启动一个 Centos 上的 Nginx 时,死活启不起来,配置文件中 listen 9090 端口,看 log 启动时会报:2018/03/06 16:54:31 [emerg] 7984#0: bind() to 0.0.0.0:9090 failed (13: Permission denied)

经过一番查询,发现是因为 SELinux 导致的,平时用到的不多,直接将其关闭即可。

查看状态

1
2
/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled

or

1
getenforce                 ##也可以用这个命令检查

关闭SELinux:

临时关闭(不用重启机器):

1
2
setenforce 0                  ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式

修改配置文件需要重启机器:

1
2
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

看了下系统中并没有进程在占用 9090 端口。最后通过 http://www.err123.com/2017/08/29/nginx-emerg-bind-to-0-0-0-0-8081-failed-13-permission-denied/?lang=en 这篇文章的最后一个方案解决了这个问题。

已上外链已失效。

大致看了下 SELinxu 的作用一个 Linux 的强化方案,大部分情况下是需要启动的 https://www.zhihu.com/question/20559538