Nginx 启动报 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)错误处理

 系统启动Nginx后,报 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)错误的处理方式,分为两种:

第一种:端口小于1024的情况:

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

原因是1024以下端口启动时需要root权限,所以sudo nginx即可。

第二种:端口大于1024的情况:

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

这种情况,需要如下操作:

首先,查看http允许访问的端口:

semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

其次,将要启动的端口加入到如上端口列表中

semanage port -a -t http_port_t  -p tcp 8090

如此即可解决如上问题。

cenos7安装semanage命令参考:https://blog.youkuaiyun.com/RunSnail2018/article/details/81185653

### Nginx 绑定端口 8809 权限被拒绝解决方案 当遇到 `nginx: [emerg] bind() to 0.0.0.0:8809 failed (13: Permission denied)` 错误时,这通常意味着当前用户没有足够的权限来绑定该端口。对于低于 1024 的端口确实需要 root 权限才能绑定,但对于高于 1024 的端口(如 8809),理论上不需要特殊权限。 #### 方法一:确认 SELinux 设置 如果服务器启用了 SELinux,则可能阻止 Nginx 绑定指定端口。可以通过命令`getenforce`查看 SELinux 状态[^2]。如果是 Enforcing 模式,建议将其暂时设为 Permissive 或永久禁用: - **临时关闭**:执行 `setenforce 0` - **永久关闭**:编辑 `/etc/selinux/config` 文件中的 `SELINUX=enforcing` 修改为 `SELINUX=disabled` #### 方法二:验证端口占用情况 即使选择了非特权端口(>1024),仍需确保目标端口未被其他程序使用。可利用如下命令检测并清理冲突的服务: ```bash netstat -anp | grep :8809 ``` 如果有任何进程正在使用此端口,请终止它们后再尝试启动 Nginx。 #### 方法三:赋予适当权限给 Nginx 进程 若上述两种方式未能解决问题,考虑调整 Nginx 可执行文件的权限属性,使其能够获得更高的访问级别而无需每次都以超级管理员身份运行: ```bash cd /usr/local/nginx/sbin/ chown root nginx chmod u+s nginx ``` 这些操作会使得 Nginx启动时自动获取提升后的权限,从而顺利完成端口绑定过程[^3]。 #### 方法四:检查防火墙配置 有时防火墙也会阻挡特定端口的数据传输请求。因此还需要核查 iptables 或 firewalld 中关于 TCP/UDP 流量过滤策略是否允许外部连接至本地 8809 端口。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值