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 永久放行端口。

 

 爆红,启动失败。

image

 

 查看日志:

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.1M 
    Nginx 当前仅占用 50.1MB 内存,资源消耗很低,运行稳定。
posted @ 2026-07-03 10:38  Anne_飞天小女警  阅读(10)  评论(0)    收藏  举报