nginx启动-权限&&进程冲突--解决办法
1、校验配置文件语法
sudo nginx -t
2、重启
sudo systemctl restart nginx
排查步骤
1、查看精简状态日志
sudo systemctl status nginx.service
2、查看完整详细启动日志(最推荐)
sudo journalctl -xeu nginx.service
核心报错定位
nginx: [emerg] bind() to 0.0.0.0:8959 failed (13: Permission denied)
方法 1:放行 SELinux 对 8959 端口的访问(永久生效)
1. 先确认 SELinux 是否开启
getenforce
- 返回
Enforcing→ SELinux 开启,就是它拦截的端口; - 返回
Permissive/Disabled→ SELinux 关闭,排查其他权限问题。
2、给 8959 端口添加 http 服务权限
# 永久放行8959给web服务 sudo semanage port -a -t http_port_t -p tcp 8959 # 验证是否添加成功 sudo semanage port -l | grep 8959
3. 重启 Nginx
sudo systemctl restart nginx
方法 2:临时关闭 SELinux 测试(仅调试用,不建议长期关闭)
# 临时关闭,重启机器后恢复 sudo setenforce 0 # 再重启nginx测试 sudo systemctl restart nginx
如果关闭后能正常启动,确定是 SELinux 拦截,回到方法 1 永久放行端口。
爆红,启动失败。

查看日志:
sudo systemctl status nginx.service
核心报错
bind() to 0.0.0.0:8959 failed (98: Address already in use)
步骤 1:找出占用 8959 端口的进程
sudo lsof -i :8959 # 或者 sudo ss -tulnp | grep 8959
显示:已经有一堆 Nginx 进程正在占用 8959 端口
1. 强制杀掉所有残留 Nginx 进程,并验证
sudo killall -9 nginx
sudo lsof -i :8959
2. 通过 systemctl 正常启动 Nginx
sudo systemctl start nginx
3. 验证状态
sudo systemctl status nginx
以后统一只用 systemctl 管理 nginx,不要混用两种启动方式:
- 启动:
sudo systemctl start nginx - 重启:
sudo systemctl restart nginx - 停止:
sudo systemctl stop nginx不要再直接敲sudo nginx前台启动,会造成进程残留冲突。
结果解读:
1. 核心状态标识
● nginx.service - The nginx HTTP and reverse proxy server Active: active (running) since Fri 2026-07-03 10:22:36 CST; 6s ago
绿色圆点 + active (running) = 服务启动成功、正在正常运行
6s ago:6 秒前刚启动完成
2. 进程结构说明
Main PID: 157032 (nginx) ├─157032 "nginx: master process /usr/sbin/nginx" ├─157033 "nginx: worker process" ...一堆worker进程
master process:Nginx 主管理进程,负责加载配置、管理子进程;- 下面所有
worker process:工作进程,用来处理用户的网络请求;
进程全部正常存在,代表服务无异常。
3. 其他字段说明
disabled; preset: disabled代表 Nginx 不会开机自动启动。
如需开机自启,执行:sudo systemctl enable nginx
Memory: 50.1MNginx 当前仅占用 50.1MB 内存,资源消耗很低,运行稳定。

浙公网安备 33010602011771号