目录
- 准备工作
- 使用包管理器安装(推荐新手)
- 在 CentOS/RHEL 上使用
yum或dnf - 在 Ubuntu/Debian 上使用
apt
- 在 CentOS/RHEL 上使用
- 从源码编译安装(推荐高级用户和定制化需求)
-
安装编译依赖
(图片来源网络,侵删) -
下载 Nginx 源码
-
配置编译选项
-
编译和安装
-
- Nginx 基本操作
- 启动
- 停止
- 重启
- 重新加载配置
- 查看状态
- 开机自启
- 配置 Nginx 示例(搭建一个简单的静态网站)
- 创建网站目录
- 编写配置文件
- 测试配置并重载
- 放行防火墙
- 访问验证
- 总结与建议
准备工作
在开始安装之前,请确保你的系统满足以下条件:

- 一台已经安装好的 Linux 服务器(推荐 CentOS 7/8 或 Ubuntu 20.04/22.04)。
- 拥有
sudo权限的非 root 用户,或者直接使用root用户。 - 系统已经连接到互联网。
- 系统的防火墙(如
firewalld或ufw)已经正确配置,或者暂时关闭以避免安装过程中的网络问题。
检查系统架构:
# 对于 CentOS/RHEL uname -m # 对于 Ubuntu/Debian uname -m
Nginx 支持 x86_64 (64位) 和 aarch64 (ARM64) 等架构。
方法一:使用包管理器安装(推荐新手)
这是最简单、最快速的方式,包管理器会自动处理依赖关系和更新。
在 CentOS/RHEL 上使用 yum 或 dnf
CentOS 7 和旧版本使用 yum,CentOS 8/RHEL 8/Fedora 使用 dnf,它们的用法基本相同。

安装 EPEL 仓库(如果尚未安装) EPEL (Extra Packages for Enterprise Linux) 提供了 Nginx 的官方稳定版。
# 对于 CentOS 7 sudo yum install epel-release # 对于 CentOS 8/RHEL 8 sudo dnf install epel-release
安装 Nginx
# 使用 yum (CentOS 7) sudo yum install nginx # 使用 dnf (CentOS 8/RHEL 8/Fedora) sudo dnf install nginx
验证安装 安装完成后,可以检查 Nginx 的版本。
nginx -v
输出类似:nginx version: nginx/1.20.1
在 Ubuntu/Debian 上使用 apt
更新软件包列表 这是一个好习惯,确保你获取的是最新的软件包信息。
sudo apt update
安装 Nginx
sudo apt install nginx
验证安装
nginx -v
输出类似:nginx version: nginx/1.18.0
方法二:从源码编译安装(推荐高级用户和定制化需求)
编译安装可以让你选择性地添加或移除模块,以定制 Nginx 的功能,例如添加 http_v2_module、ngx_brotli 模块等。
安装编译依赖
你需要安装 C 编译器、pcre、zlib 和 openssl 等开发库。
对于 CentOS/RHEL:
sudo yum groupinstall "Development Tools" sudo yum install pcre-devel zlib-devel openssl-devel
对于 Ubuntu/Debian:
sudo apt update sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev
下载 Nginx 源码
访问 Nginx 官方下载页面 获取最新的稳定版源码包,这里以 24.0 为例。
# 进入临时目录 cd /tmp # 下载源码包 wget http://nginx.org/download/nginx-1.24.0.tar.gz # 解压 tar -zxvf nginx-1.24.0.tar.gz # 进入解压后的目录 cd nginx-1.24.0
配置编译选项
这是最关键的一步,运行 configure 脚本来设置 Nginx 的安装路径和功能模块。
--prefix=/usr/local/nginx:指定 Nginx 的安装目录。--with-http_ssl_module:启用 HTTPS 支持。--with-http_v2_module:启用 HTTP/2 支持。--with-http_gzip_static_module:启用 gzip 压缩。--with-pcre:启用 pcre 正则表达式支持。--with-http_stub_status_module:用于查看 Nginx 的状态。
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_gzip_static_module \ --with-pcre \ --with-http_stub_status_module
如果不需要某个模块,直接去掉对应的 --with-xxx 即可。
编译和安装 这个过程可能需要几分钟时间。
# 编译 make # 安装 sudo make install
验证安装 检查安装目录是否存在。
ls /usr/local/nginx
你应该看到 conf, html, logs, sbin 等目录。
Nginx 基本操作
包管理器安装的 Nginx
服务名称通常是 nginx。
-
启动
# CentOS/RHEL sudo systemctl start nginx # Ubuntu/Debian sudo systemctl start nginx
-
停止
sudo systemctl stop nginx
-
重启 (先停止再启动)
sudo systemctl restart nginx
-
重新加载配置 (平滑重启,不中断连接)
sudo systemctl reload nginx
-
查看状态
sudo systemctl status nginx
-
开机自启
sudo systemctl enable nginx
源码编译安装的 Nginx
编译安装的 Nginx 没有被注册为系统服务,你需要手动管理。
-
启动
/usr/local/nginx/sbin/nginx
-
停止
# 快速停止 /usr/local/nginx/sbin/nginx -s stop # 优雅停止 /usr/local/nginx/sbin/nginx -s quit
-
重新加载配置
/usr/local/nginx/sbin/nginx -s reload
-
验证配置文件语法
/usr/local/nginx/sbin/nginx -t
配置 Nginx 示例(搭建一个简单的静态网站)
假设我们要在服务器上部署一个名为 mywebsite.com 的静态网站。
创建网站目录
# 创建网站根目录 sudo mkdir -p /var/www/mywebsite.com/html # 给当前用户设置目录权限,避免使用 sudo 编辑文件 sudo chown -R $USER:$USER /var/www/mywebsite.com/html
编写一个测试页面
echo "<h1>Hello from Nginx!</h1><p>Welcome to mywebsite.com</p>" | tee /var/www/mywebsite.com/html/index.html
编写 Nginx 配置文件
Nginx 的主配置文件在 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf,我们通常在 conf.d 或 sites-available 目录下创建独立的站点配置文件。
对于包管理器安装的 Nginx (CentOS/RHEL):
sudo vim /etc/nginx/conf.d/mywebsite.com.conf
对于包管理器安装的 Nginx (Ubuntu/Debian):
sudo vim /etc/nginx/sites-available/mywebsite.com.conf
对于源码编译安装的 Nginx:
vim /usr/local/nginx/conf/conf.d/mywebsite.com.conf
粘贴到文件中:
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
root /var/www/mywebsite.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
listen 80;:监听 80 端口。server_name;:你的域名,替换成你自己的。root;:网站根目录。index;:默认首页文件。location / { ... }:处理所有请求的规则。
测试配置并重载
# 包管理器安装 sudo nginx -t sudo systemctl reload nginx # 源码编译安装 /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload
如果配置正确,会看到 syntax is ok 和 test is successful 的提示。
放行防火墙 如果开启了防火墙,需要放行 80 (HTTP) 和 443 (HTTPS) 端口。
对于 CentOS/RHEL (firewalld):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
对于 Ubuntu/Debian (ufw):
sudo ufw allow 'Nginx Full'
访问验证
在浏览器中输入你的服务器 IP 地址或域名 http://<你的服务器IP> 或 http://mywebsite.com,你应该能看到 "Hello from Nginx!" 的页面。
总结与建议
| 特性 | 包管理器安装 | 源码编译安装 |
|---|---|---|
| 优点 | 简单快速,自动处理依赖,易于升级/卸载,由系统包管理器统一管理。 | 高度定制化,可添加/移除模块,性能可能因优化而更高。 |
| 缺点 | 版本可能不是最新的,定制化程度低。 | 过程复杂,需要手动解决依赖,升级/卸载麻烦,需要手动管理服务。 |
| 推荐场景 | 绝大多数用户,新手,生产环境。 | 需要特定模块、追求极致性能或学习 Nginx 内部原理的用户。 |
给你的建议:
- 如果你是 初学者 或只是需要一个 稳定、标准的 Nginx 环境,请毫不犹豫地选择 包管理器安装。
- 如果你是一名 开发者或系统管理员,需要根据项目需求定制 Nginx 功能,或者需要使用到官方包里没有的第三方模块,源码编译安装 是你的不二之选。
希望这份详细的教程能帮助你成功安装并运行 Nginx!
