SSH连接不上?’Connection Refused’ 或 ‘Timeout’ 常见原因与排查方法

SSH连接不上?'Connection Refused' 或 'Timeout' 常见原因与排查方法

想让你的网站或Web应用在互联网上安家落户?那你一定需要一个稳定、高效的Web服务器软件。说到这,Nginx (发音 Engine-X) 绝对是当今舞台上最耀眼的明星之一!这家伙以轻量级、高性能、高并发处理能力而闻名,无论是托管静态网页,还是作为反向代理、负载均衡器,都表现得非常出色。

废话不多说,这篇教程就带你一步步,在最主流的两大Linux服务器阵营——Ubuntu/Debian系CentOS/RHEL系 (包括Rocky Linux, AlmaLinux等) 上把Nginx给装起来跑起来!

动手前的准备 (Prerequisites):

  • 你得有台运行中的Linux服务器(推荐使用如 Ubuntu 22.04 LTS 或 CentOS Stream 9 / Rocky Linux 9 / AlmaLinux 9 等较新稳定版)。
  • 你需要一个拥有 sudo 权限的非root用户账号(用root直接操作?不太推荐哦)。
  • 对Linux命令行有那么一丢丢基础(知道怎么敲命令、用nanovim编辑文件就行)。

第一种情况:在 Ubuntu / Debian 上安装 Nginx

Ubuntu和Debian用户有福了,安装Nginx通常非常直接:

1.更新软件包列表: 先确保你的包管理器知道最新的软件信息。

Bash

sudo apt update

2.安装 Nginx: 一条命令搞定!-y 参数会自动确认安装提示。

Bash

sudo apt install nginx -y

这通常会从官方仓库安装一个稳定版本的Nginx。

配置防火墙 (UFW): Ubuntu默认使用ufw防火墙。我们需要允许外部访问HTTP(80端口)和/或HTTPS(443端口)。

查看可用应用配置: sudo ufw app list。你应该能看到类似 Nginx HTTP, Nginx HTTPS, Nginx Full 的选项。

允许HTTP访问: 对于初次安装,先允许HTTP访问。

Bash

sudo ufw allow 'Nginx HTTP'

(重要!) 确保SSH也能访问: 如果你之前没配置过,别忘了允许SSH连接,否则启用防火墙后你可能就登不上了!

Bash

sudo ufw allow OpenSSH

启用防火墙:

Bash

sudo ufw enable

y确认。

检查状态: 确认规则已生效。

Bash

sudo ufw status

你应该能看到 Nginx HTTPOpenSSH (或其他你允许的SSH端口) 处于 ALLOW 状态。

第二种情况:在 CentOS / RHEL / Rocky / AlmaLinux 上安装 Nginx

对于CentOS/RHEL系的系统,步骤也类似,主要是防火墙工具不同:

  1. 更新软件包: Bashsudo dnf update -y

2. 安装 Nginx:

Bash

sudo dnf install nginx -y

(注:在非常老的CentOS版本上可能需要先启用EPEL仓库,但在CentOS Stream 9/Rocky 9/AlmaLinux 9等新版本中,Nginx通常在默认仓库或AppStream仓库中就有。)

3.启动并设置开机自启: 安装后需要手动启动Nginx服务,并让它在服务器重启后自动运行。

Bash

sudo systemctl start nginx sudo systemctl enable nginx

4.配置防火墙 (firewalld): RHEL系默认使用 firewalld

永久允许HTTP服务: Bashsudo firewall-cmd --permanent --add-service=http

(可选) 永久允许HTTPS服务: 如果你计划使用SSL证书。

Bash

sudo firewall-cmd --permanent --add-service=https

重新加载防火墙规则使其生效:

Bash

sudo firewall-cmd --reload

检查已允许的服务:

Bash

sudo firewall-cmd --list-services --permanent

确保 http (以及 https 如果你添加了) 出现在列表中,同时也要保证 ssh 服务是被允许的。

检查 Nginx 服务状态 (通用)

无论在哪种系统上安装,你都可以用 systemctl 命令来检查Nginx服务的运行状态:

Bash

sudo systemctl status nginx

如果看到绿色的 active (running) 字样,恭喜你,Nginx已经在后台欢快地跑起来了!

常用Nginx控制命令:

  • sudo systemctl stop nginx: 停止服务
  • sudo systemctl start nginx: 启动服务
  • sudo systemctl restart nginx: 重启服务(完全停止再启动)
  • sudo systemctl reload nginx: 重新加载配置(**推荐!**修改配置文件后用这个,服务不中断)

最后一步:浏览器见证奇迹!

是时候验证你的成果了。

  1. 获取服务器的公网IP地址: 你可以在你的服务商控制面板找到它,或者登录服务器后尝试用 ip addr show (查找你的主网卡信息) 或 curl ifconfig.me 命令获取。
  2. 打开你的Web浏览器: 在地址栏输入 http://<你的服务器公网IP地址>,然后按下回车。

看到什么了?

如果一切顺利,你应该会看到一个非常经典的 “Welcome to nginx!” (或者类似字样的默认欢迎页面)。这个页面的出现,就标志着你的Nginx Web服务器已经成功安装、启动,并且防火墙也正确配置,允许外部HTTP请求访问了!

如果没看到欢迎页面怎么办?

  • 检查防火墙: 确认HTTP(80端口)是否真的在防火墙中允许了?
  • 检查Nginx服务状态: sudo systemctl status nginx 看看服务是不是真的在 active (running)?如果不是,尝试 sudo systemctl start nginx 启动它,并查看日志 (sudo journalctl -u nginx) 找原因。
  • 检查IP地址: 确认你访问的IP地址是正确的公网IP。
  • 服务商安全组: 如果你用的是云服务器,别忘了检查云平台本身的安全组(Security Group)或网络ACL规则,确保入站的80端口是开放的。

搞定!Nginx已经成功入驻你的服务器了。这只是万里长征第一步,但绝对是坚实的一步。现在,你的服务器已经具备了对外提供Web服务的能力。

实操指南知识库

如何在服务器上安装Nginx Web服务器 (Ubuntu/CentOS)

2025-4-10 15:08:12

实操指南知识库

Nginx入门:如何配置Server Blocks (虚拟主机)托管你的第一个网站

2025-4-11 11:43:42

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧