本教程适用于 CentOS 7 和 CentOS 8/Stream 系统。

目录
- 准备工作
- 使用 EPEL 仓库安装 (推荐新手)
- 安装 EPEL 仓库
- 安装 Nginx
- 启动并设置开机自启
- 验证安装
- 从 Nginx 官方源安装 (推荐生产环境)
- 安装 EPEL 和 Yum Utils 仓库
- 添加 Nginx 官方 Yum 仓库
- 安装 Nginx
- 启动并设置开机自启
- 验证安装
- Nginx 基本配置
- 配置文件结构
- 修改默认欢迎页面
- 配置虚拟主机 (一个服务器,多个网站)
- Nginx 常用操作
- 启动 Nginx
- 停止 Nginx
- 重载 Nginx (平滑重启)
- 查看 Nginx 状态
- 查看 Nginx 错误日志
- 配置防火墙
准备工作
在开始之前,请确保你已经:
- 一台已经安装好 CentOS 7/8/Stream 的服务器(推荐最小化安装)。
- 拥有
root权限,或者一个可以使用sudo命令的用户。 - 系统可以正常连接到互联网。
更新你的系统软件包到最新版本:
# CentOS 7 sudo yum update -y # CentOS 8 / Stream sudo dnf update -y
方法一:使用 EPEL 仓库安装 (推荐新手)
这是最简单、最快捷的方式,适合初学者和测试环境。
安装 EPEL 仓库
EPEL (Extra Packages for Enterprise Linux) 是一个为 RHEL 及其衍生版(如 CentOS)提供高质量额外软件包的项目。

# CentOS 7 sudo yum install epel-release -y # CentOS 8 / Stream sudo dnf install epel-release -y
安装 Nginx
你可以直接使用 yum 或 dnf 命令安装 Nginx。
# CentOS 7 sudo yum install nginx -y # CentOS 8 / Stream sudo dnf install nginx -y
启动并设置开机自启
安装完成后,启动 Nginx 服务,并设置为开机自动启动。
# 启动 Nginx sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx
验证安装
检查 Nginx 服务的运行状态。
sudo systemctl status nginx
如果看到绿色的 active (running) 字样,说明 Nginx 已经成功启动。

你还可以在浏览器中访问服务器的 IP 地址,应该能看到 Nginx 的默认欢迎页面。
# 查看你的服务器 IP 地址 ip addr
在浏览器中输入 http://<你的服务器IP地址>,应该会看到如下页面:
方法二:从 Nginx 官方源安装 (推荐生产环境)
这种方法可以确保你安装的是最新的稳定版 Nginx,并且可以方便地升级到最新的安全补丁。
安装 EPEL 和 Yum Utils 仓库
# CentOS 7 sudo yum install epel-release yum-utils -y # CentOS 8 / Stream sudo dnf install epel-release dnf-utils -y
添加 Nginx 官方 Yum 仓库
使用 yum-config-manager 工具添加 Nginx 官方仓库。
# 添加 Nginx 官方仓库 (这里我们添加的是稳定版 stable)
sudo yum-config-manager --add-repo http://nginx.org/packages/centos/$(rpm -E %{?dist}|cut -d. -f2)/$(uname -i)/
重要: 官方仓库的 GPG 密钥可能不被系统信任,我们需要手动导入它。
# 导入 GPG 密钥 rpm --import http://nginx.org/keys/nginx_signing.key
为了避免每次都提示确认,可以禁用该仓库的 GPG 检查(不推荐,但方便):
# 编辑.repo文件 sudo vi /etc/yum.repos.d/nginx.repo # 找到 [nginx-stable] 部分,将 enabled=1 改为 enabled=1,并在下面添加 gpgcheck=0 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
安全提示: gpgcheck=0 会禁用 GPG 密钥检查,虽然方便,但降低了安全性,在生产环境中,建议保留 gpgcheck=1 并正确导入密钥。
安装 Nginx
从官方源安装 Nginx。
# CentOS 7 sudo yum install nginx -y # CentOS 8 / Stream sudo dnf install nginx -y
启动并设置开机自启
与方法一相同。
sudo systemctl start nginx sudo systemctl enable nginx
验证安装
与方法一相同。
sudo systemctl status nginx
Nginx 基本配置
了解 Nginx 的配置文件结构非常重要。
配置文件结构
- 主配置文件:
/etc/nginx/nginx.conf - 网站配置文件目录:
/etc/nginx/conf.d/(所有以.conf结尾的文件都会被自动加载) - 默认网站配置:
/etc/nginx/conf.d/default.conf - 网站根目录:
/usr/share/nginx/html/(存放网站文件的地方) - 错误日志:
/var/log/nginx/error.log - 访问日志:
/var/log/nginx/access.log
修改默认欢迎页面
让我们修改默认页面,看看效果。
-
备份原始页面:
sudo cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
-
创建一个新的 index.html 文件:
sudo vi /usr/share/nginx/html/index.html
在文件中输入以下内容:
<!DOCTYPE html> <html> <head> <title>Welcome to Nginx on CentOS!</title> </head> <body> <h1>Hello from Nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working.</p> </body> </html>保存并退出 (在
vi中按ESC,然后输入wq并回车)。 -
刷新浏览器,你应该能看到新页面。
配置虚拟主机 (一个服务器,多个网站)
假设我们要为域名 example.com 和 blog.example.com 创建两个网站。
-
创建网站目录和文件
# 为 example.com 创建目录和首页 sudo mkdir -p /var/www/example.com/html echo "Welcome to Example.com" | sudo tee /var/www/example.com/html/index.html # 为 blog.example.com 创建目录和首页 sudo mkdir -p /var/www/blog.example.com/html echo "Welcome to the Blog" | sudo tee /var/www/blog.example.com/html/index.html
-
创建虚拟主机配置文件 在
/etc/nginx/conf.d/目录下创建新的配置文件。sudo vi /etc/nginx/conf.d/example.com.conf
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html; location / { try_files $uri $uri/ =404; } }保存并退出。
再为 blog.example.com 创建一个:
sudo vi /etc/nginx/conf.d/blog.example.com.conf
server { listen 80; server_name blog.example.com www.blog.example.com; root /var/www/blog.example.com/html; index index.html; location / { try_files $uri $uri/ =404; } }保存并退出。
-
测试配置并重载 Nginx 在重载服务前,务必测试配置文件是否有语法错误。
# 测试配置 sudo nginx -t # 如果看到 "syntax is ok" 和 "test is successful",则重载 sudo systemctl reload nginx
重载 (
reload) 会让 Nginx 平滑地应用新配置,而不会中断现有的连接。 -
配置本地 hosts 文件进行测试 (如果你没有真实域名) 在你的本地电脑上(不是服务器),编辑
hosts文件(Windows 在C:\Windows\System32\drivers\etc\hosts,macOS/Linux 在/etc/hosts),添加以下行:<你的服务器IP地址> example.com <你的服务器IP地址> blog.example.com然后在浏览器中访问
http://example.com和http://blog.example.com,应该能看到不同的内容。
Nginx 常用操作
| 命令 | 描述 |
|---|---|
sudo systemctl start nginx |
启动 Nginx 服务 |
sudo systemctl stop nginx |
停止 Nginx 服务 |
sudo systemctl restart nginx |
重启 Nginx 服务 (会中断所有连接) |
sudo systemctl reload nginx |
平滑重载 Nginx (推荐),读取新配置并启动新工作进程,优雅地关闭旧工作进程。 |
sudo systemctl status nginx |
查看 Nginx 运行状态 |
sudo systemctl enable nginx |
设置 Nginx 开机自启 |
sudo systemctl disable nginx |
禁止 Nginx 开机自启 |
sudo nginx -t |
测试 Nginx 配置文件语法,修改配置后必用! |
sudo journalctl -u nginx |
查看 Nginx 的系统日志 (journal) |
sudo tail -f /var/log/nginx/error.log |
实时查看 Nginx 错误日志 |
配置防火墙
默认情况下,CentOS 的防火墙 (firewalld) 会阻止外部访问 Nginx 的 80 (HTTP) 和 443 (HTTPS) 端口,你需要手动放行它们。
# 永久放行 HTTP (80) 端口 sudo firewall-cmd --permanent --add-service=http # 永久放行 HTTPS (443) 端口 sudo firewall-cmd --permanent --add-service=https # 重新加载防火墙规则使配置生效 sudo firewall-cmd --reload
你应该可以从任何地方访问你的 Nginx 服务了。
恭喜!你已经成功在 CentOS 上安装并配置了 Nginx。
- 新手入门:使用 方法一 是最快的方式。
- 生产环境:强烈推荐使用 方法二,因为它能让你轻松获得最新的稳定版和安全更新。
- 核心概念:理解配置文件结构 (
/etc/nginx/) 和虚拟主机 (server块) 是管理 Nginx 的基础。 - 安全习惯:修改配置后,始终先用
nginx -t测试,然后用systemctl reload平滑重载。 - 对外访问:不要忘记配置防火墙,否则外网无法访问你的网站。
下一步,你可以学习如何配置 SSL/TLS 证书 (使用 Let's Encrypt)、配置反向代理、配置负载均衡等更高级的用法。
