近期在阿里云平台部署了一台ECS服务器,操作系统选用Alibaba Cloud Linux 3(Aliyun Linux 3),基于CentOS Stream 8构建,本文将详细地记录官方 Nginx的全过程
一、卸载旧版本
# 确认系统安装的nginx版本
nginx -v
yum list installed | grep nginx
# 卸载前,先停止运行中的 Nginx 服务
sudo systemctl stop nginx
sudo systemctl disable nginx
sudo systemctl status nginx # 确认nginx 是否停止运行
# 卸载Nginx
sudo yum remove nginx -y
# 清理残留文件
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
sudo rm -rf /var/www/html
# 清理 yum 缓存,确保系统不再引用已卸载的 Nginx 包
sudo yum clean all
sudo yum makecache
# 检查 Nginx 是否已完全卸载,为空则完全卸载
which nginx
# 移除nginx 源
sudo rm -f /etc/yum.repos.d/nginx.repo
二、解决 yum 排除过滤问题
检查yum 配置中存在 exclude=nginx,这行配置会阻止 yum 对 nginx 及其相关包执行任何操作,包括安装、更新和卸载
方案一 : 可以先注释该行配置,安装完成后再取消注释
# 先备份yum配置文件
sudo cp /etc/yum.conf /etc/yum.conf.bak
# 编辑配置文件,进入配置文件,Vi编辑器 输入i 进入编辑状态,在exclude=nginx*的行首#号(例如:#exclude=nginx*),按Esc后输入:wq,enter保存;如果想取消修改,输入:qa!,enter 退出编辑
sudo vi /etc/yum.conf
# 清除YUM缓存
sudo yum clean all
# 安装nginx
方案二 :临时禁用所有排除规则命令安装,--disableexcludes 仅对当前命令临时生效,不会修改系统配置文件。安装完成后,下次使用 dnf 时,原配置文件中的排除规则会自动恢复生效。
# 使用 --disableexcludes=all 参数临时禁用所有排除规则
sudo dnf -y --disableexcludes=all install nginx
三、安装nginx
由于 Nginx 官方不直接支持 CentOS 8/Alibaba Cloud Linux 3,需手动配置兼容的仓库;我们使用 https://nginx.org/packages/rhel/8/,因为 RHEL 8 的二进制包完全兼容 Alibaba Cloud Linux 3。
配置nginx 源
# 检查系统版本
cat /etc/redhat-release # 确认是 Alibaba Cloud Linux 3
# 创建 Nginx 仓库配置文件(指向 RHEL 8,与 Alibaba Cloud Linux 3 兼容)
sudo tee /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/rhel/8/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
安装 Nginx
# 安装 Nginx(使用 RHEL 8 仓库,兼容 Alibaba Cloud Linux 3)
sudo dnf -y install nginx
# 验证安装
nginx -v # 应显示 nginx/1.24.x 或更高版本
启动nginx
# 启动 Nginx 服务
sudo systemctl start nginx
sudo systemctl enable nginx
# 检查服务状态
sudo systemctl status nginx
# 测试访问(应返回 "Welcome to nginx!")
curl http://localhost
四、公网访问nginx服务配置
要从公网访问阿里云服务器上的 Nginx 服务,需要完成以下 3 个关键步骤:配置安全组规则、开放防火墙端口、验证服务监听与公网连通性
1、配置安全组规则
阿里云服务器默认通过 安全组 控制公网入站流量,需手动开放 HTTP(80 端口)或 HTTPS(443 端口),根据以下操作进行配置:
- 登录阿里云控制台 访问 阿里云服务器管理控制台,找到你的服务器实例。
- 进入安全组配置
- 点击实例右侧的 安全组 → 点击安全组名称 → 进入 安全组规则 页面。
- 点击 添加安全组规则。
- 添加 HTTP/HTTPS 规则
- 规则方向:选择「入方向」
- 授权策略:允许
- 协议类型:选择「自定义 TCP 协议」
- 端口范围:输入
80/80(HTTP)或443/443(HTTPS) - 授权对象:输入
0.0.0.0/0(允许所有公网 IP 访问) - 描述:自定义(如 “Allow HTTP access”)
- 点击 确定 保存规则
2、开放防火墙端口
# 检查防火墙状态(确保已启动)
sudo systemctl status firewalld
# 开放 HTTP 端口(80)
sudo firewall-cmd --permanent --add-port=80/tcp
# 开放 HTTPS 端口(443,可选)
sudo firewall-cmd --permanent --add-port=443/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
3、验证服务监听与公网连通性
# 确保 Nginx 已启动并开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx # 确认状态为 active (running)
# 查看 80 端口是否被监听(需显示 0.0.0.0:80)
sudo netstat -tunlp | grep nginx
# 或使用 ss 命令
sudo ss -ltnp | grep nginx
4、公网访问测试
-
获取服务器公网 IP 在阿里云控制台实例页面查看公网 IP(例如:
XXX.XXX.XXX.XXX)。 -
本地浏览器访问 在浏览器输入公网 IP,若看到 Nginx 默认欢迎页面(“Welcome to nginx!”),说明访问成功。
-
命令行测试(可选)
# 在本地终端使用 `curl` 命令:
curl http://公网IP
五、避免Docker 干扰
如果系统已经安装过 Docker,下载nginx 过程中,DNF 在处理新安装请求时仍会尝试更新所有启用的仓库元数据。Docker 仓库配置错误(如指向不存在的 centos/8 路径或 SSL 问题)会导致整个安装过程中断
- 安装nginx 前,临时禁用 Docker 仓库,确保 Nginx 安装不受干扰
# 重命名 Docker 仓库配置文件(临时禁用)
sudo mv /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/docker-ce.repo.bak
# 清除缓存并重新生成
sudo dnf clean all
sudo dnf makecache
-
安装nginx
-
恢复 Docker 仓库配置
# 恢复 Docker 仓库配置文件
sudo mv /etc/yum.repos.d/docker-ce.repo.bak /etc/yum.repos.d/docker-ce.repo
# 修复 Docker 仓库配置(指向 CentOS Stream 8)
sudo vi /etc/yum.repos.d/docker-ce.repo
# 将 baseurl 修改为(使用阿里云镜像源):
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/\$basearch/stable
# 重新生成缓存
sudo dnf makecache