深入浅出:Nginx 的下载与安装完全指南
Nginx(发音为 “engine-x”)是一个高性能的开源 Web 服务器、反向代理服务器、邮件代理服务器以及通用的 TCP/UDP 代理服务器。自其问世以来,Nginx 以其高性能、稳定性、丰富的功能集以及低资源消耗而闻名,在全球范围内被广泛应用于搭建各种规模的 Web 服务和应用。
无论是搭建个人博客、企业官网,还是构建高并发的微服务架构,Nginx 都扮演着至关重要的角色。因此,掌握如何正确地下载和安装 Nginx,是迈向高效网络服务的第一步。
本文将详细介绍在不同操作系统环境下下载和安装 Nginx 的各种方法,包括使用系统自带的软件包管理器、从源码编译安装,以及在 Windows 环境下的安装步骤,并附带一些安装后的基本配置和验证方法。
一、在开始之前:准备工作与注意事项
在正式开始下载和安装 Nginx 之前,请确保您已经做好以下准备:
- 操作系统选择: Nginx 主要运行在 Linux、Unix、BSD 等类 Unix 系统上,同时也支持 Windows 系统(虽然在生产环境中使用较少)。请确定您的目标操作系统。
- 用户权限: 安装 Nginx 通常需要管理员权限(root 或拥有 sudo 权限的用户)。
- 网络连接: 确保您的服务器或计算机能够访问互联网以下载安装包或源码。
- 基本命令行知识: 了解如何在终端或命令行界面中执行基本命令。
- 理解安装方法的差异:
- 软件包管理器安装: 这是最推荐、最便捷的方式,适用于大多数用户。它能自动处理依赖关系,易于更新和维护。但安装的版本可能是仓库中的稳定版本,不一定是最新版。
- 源码编译安装: 这种方法提供最大的灵活性,您可以选择最新的 Nginx 版本,自定义编译选项,包含或排除特定模块。但过程相对复杂,需要手动解决依赖问题,且后续更新维护也需要重新编译。
- Windows 安装: 适用于在 Windows 上进行开发或测试,但在生产环境中使用不如类 Unix 系统稳定和常见。
- Docker 安装: 将 Nginx 运行在 Docker 容器中,提供环境隔离和便捷部署,是现代应用部署的常用方式,本文也会简要提及。
二、使用软件包管理器安装 (推荐)
对于绝大多数 Linux 用户而言,使用系统自带的软件包管理器安装 Nginx 是最简单、最快捷的方式。这种方法会自动处理 Nginx 运行所需的依赖库,并方便日后的更新和管理。
我们将分别介绍在基于 Debian (如 Ubuntu) 和基于 Red Hat (如 CentOS, Fedora, RHEL) 的系统上如何使用各自的包管理器进行安装。
2.1 在 Debian/Ubuntu 系统上安装
Debian 和 Ubuntu 使用 apt
(或较旧的 apt-get
) 作为软件包管理器。
步骤 1:更新软件包列表
在终端中执行以下命令,更新系统的软件包索引,确保能够获取到最新的 Nginx 版本信息:
bash
sudo apt update
输入您的用户密码(如果需要)。sudo
命令用于以管理员权限执行后续的命令。
步骤 2:安装 Nginx
执行以下命令安装 Nginx:
bash
sudo apt install nginx
系统会提示您确认安装以及将要安装的软件包列表和占用的磁盘空间。输入 Y
并按回车确认。
apt
会自动下载 Nginx 软件包及其所有必要的依赖项,并完成安装过程。
步骤 3:验证安装并启动 Nginx 服务
安装完成后,Nginx 服务通常会自动启动。您可以使用以下命令检查 Nginx 服务的状态:
bash
systemctl status nginx
如果服务正在运行,您将看到类似 “active (running)” 的输出。
如果服务没有自动启动,或者您想手动启动它,可以使用:
bash
sudo systemctl start nginx
要设置 Nginx 开机自启(如果默认没有设置的话):
bash
sudo systemctl enable nginx
步骤 4:测试 Nginx
打开您的 Web 浏览器,访问服务器的 IP 地址或域名。如果您在本地安装,可以访问 http://localhost/
或 http://127.0.0.1/
。
如果一切正常,您应该能看到 Nginx 的默认欢迎页面,通常显示 “Welcome to nginx!”。
Nginx 的常用 Systemd 服务管理命令:
- 启动:
sudo systemctl start nginx
- 停止:
sudo systemctl stop nginx
- 重启:
sudo systemctl restart nginx
(平滑重启,会关闭旧进程启动新进程) - 重新加载配置:
sudo systemctl reload nginx
(优雅重启,加载新的配置文件,不会中断现有连接) - 查看状态:
systemctl status nginx
- 禁用开机自启:
sudo systemctl disable nginx
2.2 在 Red Hat/CentOS/Fedora 系统上安装
Red Hat 系列系统使用 yum
(在较新的 Fedora 和 CentOS 8+ 中是 dnf
) 作为软件包管理器。
步骤 1:更新软件包列表
在终端中执行以下命令,更新系统的软件包索引:
“`bash
对于 CentOS 7 及更早版本, 或者 RHEL 7 及更早版本
sudo yum update
对于 CentOS 8+, Fedora, RHEL 8+
sudo dnf update
“`
输入您的用户密码(如果需要)。
步骤 2:添加 Nginx 官方仓库 (可选,但推荐以获取最新稳定版)
默认的系统仓库中可能包含 Nginx,但版本可能较旧。为了获取最新稳定版或主线版,可以添加 Nginx 的官方仓库。
创建 /etc/yum.repos.d/nginx.repo
(对于 CentOS/RHEL) 或 /etc/yum.repos.d/nginx.repo
(对于 Fedora) 文件,并添加以下内容:
-
对于 CentOS:
bash
sudo vim /etc/yum.repos.d/nginx.repo
(使用您喜欢的编辑器,如 nano 或 vim)粘贴以下内容(以 CentOS 7 为例,CentOS 8+ 将 repo 文件路径中的
centos
改为centos-stream
或rhel
):“`ini
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
``
stable
这里同时配置了稳定版 () 和主线版 (
mainline) 仓库。
enabled=1表示默认启用稳定版,
enabled=0表示默认禁用主线版。如果您想安装主线版,可以在安装时指定
–enablerepo=nginx-mainline`。 -
对于 Fedora:
bash
sudo vim /etc/yum.repos.d/nginx.repo粘贴以下内容:
“`ini
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/fedora/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/fedora/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
“`
保存并关闭文件。
步骤 3:安装 Nginx
添加仓库后,再次更新 yum/dnf 缓存:
bash
sudo yum makecache # 对于 yum
sudo dnf makecache # 对于 dnf
然后安装 Nginx:
“`bash
对于 CentOS 7 及更早版本, 或者 RHEL 7 及更早版本
sudo yum install nginx
对于 CentOS 8+, Fedora, RHEL 8+
sudo dnf install nginx
如果你想安装主线版,可以这样指定 (以 dnf 为例):
sudo dnf –enablerepo=nginx-mainline install nginx
“`
系统会提示您确认安装。输入 Y
并按回车确认。
步骤 4:验证安装并启动 Nginx 服务
安装完成后,使用以下命令启动 Nginx 服务并设置为开机自启:
bash
sudo systemctl start nginx
sudo systemctl enable nginx
检查 Nginx 服务的状态:
bash
systemctl status nginx
如果服务正在运行,您将看到类似 “active (running)” 的输出。
步骤 5:测试 Nginx
与 Ubuntu 类似,打开您的 Web 浏览器,访问服务器的 IP 地址或域名,您应该能看到 Nginx 的默认欢迎页面。
防火墙注意事项 (重要):
在 Red Hat/CentOS/Fedora 系统上,默认的防火墙 (firewalld
) 可能会阻止外部访问 Nginx 的默认端口 (HTTP 80 和 HTTPS 443)。您需要配置防火墙规则以允许这些端口的流量。
“`bash
永久允许 HTTP (80 端口)
sudo firewall-cmd –permanent –add-service=http
永久允许 HTTPS (443 端口)
sudo firewall-cmd –permanent –add-service=https
重新加载防火墙规则
sudo firewall-cmd –reload
“`
然后再次测试访问您的服务器 IP。
Nginx 的常用 Systemd 服务管理命令 (与 Ubuntu 类似):
- 启动:
sudo systemctl start nginx
- 停止:
sudo systemctl stop nginx
- 重启:
sudo systemctl restart nginx
- 重新加载配置:
sudo systemctl reload nginx
- 查看状态:
systemctl status nginx
- 禁用开机自启:
sudo systemctl disable nginx
三、从源码编译安装 Nginx
从源码编译安装 Nginx 提供了最大的灵活性,您可以选择任何版本,并且可以根据需要启用或禁用特定的模块。这对于需要使用最新功能、非标准模块或进行性能调优的高级用户非常有用。然而,这个过程比使用软件包管理器更复杂,需要手动处理依赖关系。
步骤 1:安装编译所需的依赖库
在开始编译之前,您需要安装一些构建 Nginx 所需的库,包括:
- GCC (GNU Compiler Collection): 用于编译代码。
- PCRE (Perl Compatible Regular Expressions): 支持正则表达式重写功能。
- zlib: 支持 Gzip 压缩。
- OpenSSL: 支持 HTTPS (SSL/TLS) 功能。
根据您的操作系统,安装这些依赖库的命令如下:
-
在 Debian/Ubuntu 系统上:
bash
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
build-essential
包包含了 GCC 和其他编译工具。 -
在 Red Hat/CentOS/Fedora 系统上:
“`bash
对于 CentOS 7 及更早版本, 或者 RHEL 7 及更早版本
sudo yum groupinstall “Development Tools”
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel对于 CentOS 8+, Fedora, RHEL 8+
sudo dnf groupinstall “Development Tools”
sudo dnf install pcre pcre-devel zlib zlib-devel openssl openssl-devel
``
Development Tools` 组包含了编译所需的工具链。
步骤 2:下载 Nginx 源码
访问 Nginx 官方网站 http://nginx.org/en/download.html
,找到您想要下载的稳定版(Stable version)或主线版(Mainline version)的源码包链接(通常是 .tar.gz
格式)。
使用 wget
或 curl
命令下载源码包到服务器:
“`bash
示例:下载最新的稳定版 (请根据官网实际链接修改版本号)
wget http://nginx.org/download/nginx-1.24.0.tar.gz
或者使用 curl
curl -O http://nginx.org/download/nginx-1.24.0.tar.gz
“`
步骤 3:解压源码包
下载完成后,使用 tar
命令解压源码包:
“`bash
示例:解压 nginx-1.24.0.tar.gz
tar -xzf nginx-1.24.0.tar.gz
“`
这会在当前目录创建一个名为 nginx-1.24.0
的目录。
步骤 4:进入源码目录并配置编译选项
进入解压后的源码目录:
bash
cd nginx-1.24.0
运行 ./configure
脚本来检查系统环境、检测依赖库并配置编译选项。这是一个非常重要的步骤,您可以选择要包含哪些模块。
默认情况下,./configure
会将 Nginx 安装到 /usr/local/nginx
目录下。您可以使用 --prefix=/path/to/install
选项指定安装路径。
以下是一些常用的配置选项示例:
--prefix=/etc/nginx
: 将 Nginx 安装到/etc/nginx
(配置、日志、HTML等) 和/usr/sbin/nginx
(二进制文件) 等标准位置。--with-http_ssl_module
: 启用 HTTP SSL/TLS 模块,支持 HTTPS。--with-http_gzip_module
: 启用 HTTP Gzip 模块,支持对响应内容进行压缩。--with-http_stub_status_module
: 启用状态模块,可以查看 Nginx 的连接状态等信息。--with-http_realip_module
: 启用 RealIP 模块,获取客户端真实 IP (在使用代理时有用)。--add-module=/path/to/third_party_module
: 添加第三方模块。
您可以使用 ./configure --help
命令查看所有可用的配置选项。
一个典型的配置命令可能如下所示:
bash
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_gzip_module \
--with-http_stub_status_module \
--with-http_realip_module
执行 configure
脚本后,如果没有错误,它会生成 Makefile
文件。
步骤 5:编译和安装
配置完成后,执行 make
命令进行编译:
bash
make
这个过程可能需要几分钟时间,具体取决于您的系统性能。
编译成功后,执行 make install
命令进行安装:
bash
sudo make install
make install
会将编译好的二进制文件、配置文件、HTML 文件等复制到 --prefix
指定的目录下。
步骤 6:创建 Systemd 服务单元文件 (推荐)
为了方便管理 Nginx 服务(启动、停止、重启、开机自启),建议创建一个 Systemd 服务单元文件。
创建一个名为 nginx.service
的文件,例如在 /etc/systemd/system/
目录下:
bash
sudo vim /etc/systemd/system/nginx.service
粘贴以下内容。请注意,ExecStart
中的路径需要根据您的 --prefix
安装路径进行调整。如果您的 Nginx 二进制文件在 /usr/local/nginx/sbin/nginx
,则 ExecStart
就是 /usr/local/nginx/sbin/nginx -g 'daemon off;'
。
“`ini
[Unit]
Description=nginx – high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid # 请根据您的安装路径调整日志目录
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf # 检查配置语法 (调整路径)
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 启动 Nginx (调整路径)
ExecReload=/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf # 平滑加载配置 (调整路径)
ExecStop=/usr/local/nginx/sbin/nginx -s quit # 优雅关闭 Nginx (调整路径)
PrivateTmp=true
[Install]
WantedBy=multi-user.target
“`
保存并关闭文件。
重新加载 Systemd 配置:
bash
sudo systemctl daemon-reload
步骤 7:启动和管理 Nginx 服务
现在您可以使用 Systemd 命令来管理您的源码编译安装的 Nginx 了:
bash
sudo systemctl start nginx # 启动 Nginx
sudo systemctl enable nginx # 设置开机自启
systemctl status nginx # 查看状态
sudo systemctl reload nginx # 重新加载配置
sudo systemctl stop nginx # 停止 Nginx
步骤 8:测试 Nginx
同样,打开浏览器访问服务器 IP 或域名进行测试。如果您使用了 --prefix=/usr/local/nginx
,Nginx 的默认 HTML 文件通常在 /usr/local/nginx/html
目录下。
防火墙注意事项 (源码编译):
与包管理器安装类似,您可能需要在防火墙中开放 80 和 443 端口。方法与前文相同。
四、在 Windows 系统上安装 Nginx
虽然在 Windows 上使用 Nginx 不如在类 Unix 系统上常见,尤其不推荐用于生产环境,但对于开发或测试目的,在 Windows 上安装 Nginx 是可行的。
步骤 1:下载 Nginx for Windows
访问 Nginx 官方网站 http://nginx.org/en/download.html
,找到 “Windows builds” 部分。下载最新的稳定版或主线版的 .zip
文件。
步骤 2:解压文件
下载完成后,将 .zip
文件解压到您选择的任意目录,例如 C:\nginx
。解压后,您会看到一个名为 nginx-x.y.z
(x.y.z 为版本号) 的文件夹,其中包含了 Nginx 的可执行文件、配置文件等。
步骤 3:启动 Nginx
打开命令提示符 (cmd.exe
) 或 PowerShell,导航到您解压 Nginx 的目录:
bash
cd C:\nginx\nginx-x.y.z
(请将 nginx-x.y.z
替换为您实际的文件夹名称)
执行以下命令启动 Nginx:
bash
nginx.exe
或者,如果您想以后台进程运行:
bash
start nginx.exe
步骤 4:测试 Nginx
打开您的 Web 浏览器,访问 http://localhost/
或 http://127.0.0.1/
。如果 Nginx 成功启动,您应该会看到 Nginx 的默认欢迎页面。
Windows 环境下的 Nginx 管理命令:
在 Nginx 目录下执行:
- 启动:
start nginx.exe
- 优雅关闭:
nginx.exe -s quit
(等待当前请求处理完毕后退出) - 快速关闭:
nginx.exe -s stop
(立即退出,可能中断现有连接) - 重新加载配置:
nginx.exe -s reload
- 检查配置语法:
nginx.exe -t
注意事项 (Windows):
- Nginx 在 Windows 上没有作为系统服务运行的官方支持。虽然有一些第三方工具可以实现,但官方不提供。
- 性能和稳定性通常不如在类 Unix 系统上。
- 路径分隔符使用反斜杠
\
。 - 修改配置后,需要使用
nginx.exe -s reload
命令重新加载。
五、使用 Docker 安装 Nginx (现代部署方式)
将 Nginx 运行在 Docker 容器中是一种非常流行且便捷的方式。Docker 提供环境隔离、易于部署和管理、以及跨平台一致性。
步骤 1:安装 Docker
首先,您需要在您的系统上安装 Docker。请参考 Docker 官方文档获取针对您操作系统的安装指南:https://docs.docker.com/get-docker/
步骤 2:拉取 Nginx 镜像
安装 Docker 后,打开终端或命令行,执行以下命令从 Docker Hub 拉取最新的 Nginx 官方镜像:
bash
docker pull nginx
您也可以指定特定的 Nginx 版本,例如 docker pull nginx:1.25.3
或拉取主线版 docker pull nginx:mainline
。
步骤 3:运行 Nginx 容器
使用 docker run
命令启动一个 Nginx 容器。最简单的命令如下:
bash
docker run --name my-nginx -p 80:80 -d nginx
--name my-nginx
: 为容器指定一个名称 (可选)。-p 80:80
: 将主机的 80 端口映射到容器的 80 端口。这样您就可以通过访问主机的 80 端口来访问 Nginx。-d
: 以后台模式 (detached) 运行容器。nginx
: 指定要运行的镜像名称。
步骤 4:测试 Nginx
打开 Web 浏览器,访问主机的 IP 地址或域名。您应该能看到 Nginx 的默认欢迎页面。
Docker Nginx 的常用命令:
- 查看正在运行的容器:
docker ps
- 查看所有容器 (包括已停止的):
docker ps -a
- 停止容器:
docker stop my-nginx
(将my-nginx
替换为您的容器名称或 ID) - 启动容器:
docker start my-nginx
- 重启容器:
docker restart my-nginx
- 删除容器:
docker rm my-nginx
(容器必须是停止状态) - 删除镜像:
docker rmi nginx
(镜像不能被任何容器使用)
配置 Docker 中的 Nginx:
在 Docker 中配置 Nginx 通常通过挂载卷 (volumes) 来实现,将主机的 Nginx 配置文件目录和 HTML 文件目录挂载到容器内的对应目录,这样您就可以在主机上修改配置文件,而无需重建容器。
例如:
bash
docker run --name my-nginx -p 80:80 -d \
-v /path/on/host/nginx.conf:/etc/nginx/nginx.conf \
-v /path/on/host/conf.d/:/etc/nginx/conf.d/ \
-v /path/on/host/html/:/usr/share/nginx/html/ \
nginx
请将 /path/on/host/...
替换为主机上的实际路径。这种方式非常灵活,是 Docker 部署 Nginx 的推荐做法。
六、安装后的基本验证与配置检查
无论您采用哪种安装方式,安装完成后都应该进行一些基本验证和配置检查。
-
检查 Nginx 版本:
打开终端,执行:
bash
nginx -V
这会输出 Nginx 的详细版本信息、构建信息以及编译时启用的模块列表。大写-V
(或--version
) 会输出更多信息,小写-v
只输出版本号。 -
检查配置语法:
在修改 Nginx 配置文件后,在重新加载或重启服务之前,务必检查配置文件的语法是否有误。执行以下命令:
bash
sudo nginx -t
如果配置文件语法正确,您会看到类似nginx: configuration file /etc/nginx/nginx.conf syntax is ok
和nginx: configuration file /etc/nginx/nginx.conf test is successful
的输出。如果有错误,会明确指出错误所在的文件和行号。 -
查找 Nginx 配置文件位置:
默认的 Nginx 配置文件通常位于:- 软件包管理器安装:
/etc/nginx/nginx.conf
,额外的配置片段可能在/etc/nginx/conf.d/
或/etc/nginx/sites-available/
(Debian/Ubuntu) 中。 - 源码编译安装:取决于您
--prefix
指定的路径,通常在/usr/local/nginx/conf/nginx.conf
。 - Windows 安装:在您解压的 Nginx 文件夹下的
conf
目录中。 - Docker 安装:在容器内的
/etc/nginx/nginx.conf
和/etc/nginx/conf.d/
,如果您使用了卷挂载,则对应到主机上的路径。
- 软件包管理器安装:
-
检查 Nginx 运行进程:
您可以使用ps
命令查看 Nginx 的运行进程:
bash
ps aux | grep nginx
您应该会看到一个master process
和一个或多个worker process
。 -
检查端口监听:
确认 Nginx 正在监听配置的端口 (默认为 80)。
bash
sudo netstat -tulnp | grep nginx
或者使用ss
命令:
bash
sudo ss -tulnp | grep nginx
输出应该显示 Nginx 监听在0.0.0.0:80
或:::80
(IPv6)。
七、常见问题与故障排除
-
Nginx 无法启动或访问拒绝 (Permission Denied):
- 检查日志文件:通常在
/var/log/nginx/error.log
(包管理器安装) 或/usr/local/nginx/logs/error.log
(源码安装)。错误日志会提供详细信息。 - 检查文件权限:确保 Nginx 用户有权读取配置文件、日志文件以及网站文件。
- 检查 SELinux 或 AppArmor:在某些安全增强型 Linux 系统上,SELinux 或 AppArmor 可能会阻止 Nginx 访问某些目录或端口。您可能需要调整其策略或暂时将其设置为宽容模式进行测试。
- 端口冲突:确保 Nginx 监听的端口没有被其他程序占用。使用
sudo netstat -tulnp | grep <port>
或sudo ss -tulnp | grep <port>
(将<port>
替换为 80 或 443) 来检查。
- 检查日志文件:通常在
-
无法通过浏览器访问 Nginx 页面:
- 检查 Nginx 服务是否正在运行 (
systemctl status nginx
或ps aux | grep nginx
)。 - 检查服务器防火墙 (
ufw
,firewalld
,iptables
) 是否开放了 80 和 443 端口。 - 检查网络连接:确保您的客户端能够访问服务器 IP。
- 检查服务器上的安全组设置 (如果您在云服务商上运行)。
- 检查 Nginx 服务是否正在运行 (
-
配置修改后不生效:
- 修改配置文件后,必须重新加载或重启 Nginx 服务 (
sudo systemctl reload nginx
或sudo systemctl restart nginx
)。 - 使用
sudo nginx -t
检查配置文件语法是否正确。
- 修改配置文件后,必须重新加载或重启 Nginx 服务 (
八、总结与展望
本文详细介绍了在类 Unix 和 Windows 系统上安装 Nginx 的多种方法,从最便捷的软件包管理器安装,到高度灵活的源码编译安装,再到现代化的 Docker 容器部署。每种方法都有其适用场景,您可以根据自己的需求和环境选择最合适的方式。
成功安装 Nginx 仅仅是开始,后续的配置和优化才是发挥 Nginx 强大性能的关键。您可以进一步学习 Nginx 的配置文件语法、虚拟主机配置、反向代理设置、负载均衡、SSL 证书配置、缓存策略等高级主题。
希望这篇详细的指南能帮助您顺利地下载和安装 Nginx,为您的 Web 服务之旅打下坚实的基础。祝您使用愉快!