在启用 SELinux 的情况下, 默认情况下系统会阻止非标准端口的使用。如果你想启用一个非常用端口 (例如 8090), 你需要手动将该端口添加到 SELinux 的白名单中
操作步骤
安装 semanage 命令
如果你遇到 semanage: command not found 错误, 说明你的系统未安装 semanage 工具。你可以根据不同的 CentOS 版本来安装所需的软件包
查找命令对应的软件包名称
[root@123123 ~]# yum provides /usr/sbin/semanage
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * elrepo: ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
policycoreutils-python-2.5-33.el7.x86_64 : SELinux policy core python utilities
Repo        : base
Matched from:
Filename    : /usr/sbin/semanage
CentOS 7 安装命令
yum install policycoreutils-python
CentOS 8 安装命令
yum install policycoreutils-python-utils
查看 Nginx 启动的用户组
Nginx 启动时会使用以下用户组
user  nginx;
配置文件测试的端口
在 Nginx 配置文件中, 需要设置一些端口来监听, 例如
server {
    listen 8090;             # does not work
    # listen 8080;           # works
    # listen 9090;           # does not work
    # listen 9090 default;   # does not work neighter
    # listen 80;             # works!
    server_name <some IP>;
    ...
}
查看 SELinux HTTP 端口列表
你可以通过以下命令查看当前 SELinux 所允许的 HTTP 端口
semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
添加自定义端口
如果你希望在 SELinux 中启用端口 8090, 可以执行以下命令
semanage port -a -t http_port_t -p tcp 8090
通过以上步骤, 你可以在 SELinux 环境下启用自定义端口, 以便 Nginx 或其他服务能够绑定并使用这些端口。如果没有添加到白名单, SELinux 将阻止应用程序绑定到这些端口。
原文
nginx: no permission to bind port 8090 but it binds to 80 and 8080
How to Fix ‘semanage command’ Not Found Error in CentOS/RHEL