You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CentOS系统下Nginx无法启动:端口占用报错问题求助

解决CentOS中Nginx启动端口被占用的问题

嘿,这个问题我碰到好多次了!从你贴的报错信息来看,核心问题就是80和443端口已经被其他进程占用,导致Nginx没法绑定这些端口启动失败。别慌,给你几个靠谱的解决办法:

方法一:找出并终止占用端口的进程

这是最直接的方案,把抢端口的进程干掉就行:

  • 先查80端口的占用情况,用ss命令(比老的netstat更高效):
    ss -tulpn | grep :80
    
    输出里会显示占用端口的进程PID和名称,比如可能是Apache(httpd)或者其他服务。
  • 同理查443端口:
    ss -tulpn | grep :443
    
  • 如果是普通进程,直接用PID强制杀掉:
    kill -9 进程PID
    
    如果是系统服务(比如httpd),用systemctl操作更稳妥:
    systemctl stop httpd
    # 要是不想它下次开机再抢端口,直接禁用开机启动
    systemctl disable httpd
    
  • 杀完之后再启动Nginx试试:nginx

方法二:修改Nginx的监听端口

要是不想杀掉其他进程,换个空闲端口给Nginx用也可以:

  • 打开Nginx的主配置文件:
    vi /etc/nginx/nginx.conf
    
  • 找到里面的listen 80;listen 443 ssl;行,改成没被占用的端口,比如8080和8443:
    listen 8080;
    listen 8443 ssl;
    
  • 别忘了检查子配置目录/etc/nginx/conf.d/下的文件,有些站点配置可能也单独写了监听端口,要一起修改。
  • 测试配置是否正确:
    nginx -t
    
  • 没问题的话重启Nginx:
    nginx -s reload
    
    之后访问Nginx就要用新端口了,比如http://你的服务器IP:8080

方法三:清理Nginx残留进程

有时候可能是Nginx自己的旧进程没彻底退出,导致端口被占用:

  • 先看看有没有残留的Nginx进程:
    ps aux | grep nginx
    
  • 杀掉所有Nginx进程:
    pkill nginx
    # 或者用killall
    killall nginx
    
  • 然后重新启动Nginx:
    systemctl start nginx
    

额外注意事项

如果是云服务器,修改端口后要在云服务商的安全组里开放新端口;如果用了firewalld防火墙,也要添加端口规则:

# 开放8080端口,永久生效
firewall-cmd --add-port=8080/tcp --permanent
# 重启防火墙生效
firewall-cmd --reload

内容的提问来源于stack exchange,提问作者RaviSingh4004

火山引擎 最新活动