一、Nginx 是什么?
简单说,Nginx 是一个高性能的 Web 服务器 和 反向代理服务器。
你可以用它来做这些事情:
把网页文件发布给浏览器访问(静态网站)
把请求转发给后面的应用(比如 Java、Node.js、Python 程序)
同时转发给多台服务器,分担压力(负载均衡)
给网站加上 HTTPS 小锁
接下来我们分别看在 Linux 和 Windows 上怎么把它装好、用起来。
二、在 Linux 上安装 Nginx
环境说明
本教程以 CentOS 7 / RHEL 7 或 Rocky Linux 8/9 作为 yum 安装的演示系统。
如果你用的是 Ubuntu/Debian,可以将 yum 换成 apt,思路完全一样。
方法一:使用 yum 安装(推荐新手、生产环境)
yum 是 CentOS/RHEL 系统的包管理器,它会帮你自动解决依赖,并注册成系统服务,开机自启。
1. 添加 Nginx 官方仓库
CentOS 默认仓库里没有最新版 Nginx,需要手动添加官方源。
执行下面的命令,创建仓库文件:
sudo vi /etc/yum.repos.d/nginx.repo
按 i 进入编辑模式,粘贴以下内容(对应 CentOS 7,如果是 RHEL 8/9 请把 $releasever 改成 8 或 9,或者直接复制官方对应系统的配置)
[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
module_hotfixes=true
按 Esc 退出编辑,再输入 :wq 保存退出。
2. 安装 Nginx
sudo yum install nginx -y
等待安装完成。
3. 启动 Nginx 并设置开机自启
sudo systemctl start nginx # 启动
sudo systemctl enable nginx # 开机自启
sudo systemctl status nginx # 查看运行状态
如果状态显示 active (running),说明启动成功。
4. 防火墙放行端口
Nginx 默认使用 80 端口。
如果你开启了防火墙,需要允许访问:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
现在打开浏览器,访问你服务器的 IP 地址,就能看到 Nginx 的默认欢迎页了。
方法二:解压二进制包安装(通用所有 Linux 发行版)
这种方式不需要 root 权限就可以安装到任意目录(比如你的家目录),适合测试或没有包管理器的环境。
1. 下载预编译包
前往 Nginx 官网下载页面:https://nginx.org/en/download.html
我们选择 Stable version 的 Linux 版(一般是 .tar.gz 包)。
在服务器上用 wget 下载(以 1.24.0 为例):
cd ~
wget https://nginx.org/download/nginx-1.24.0.tar.gz
2. 解压到指定目录
解压后得到一个文件夹,里面就是可以直接运行的 Nginx。
tar -zxvf nginx-1.24.0.tar.gz
mv nginx-1.24.0 nginx # 重命名一下,方便操作
cd nginx
3. 目录结构说明
nginx/
├── conf # 配置文件 nginx.conf 就在这里
├── html # 默认网页文件夹
├── logs # 日志文件(access.log, error.log)
└── sbin # 可执行文件 nginx
4. 启动 Nginx
进入 nginx 目录后,直接运行:
./sbin/nginx
没有任何输出就表示启动成功。检查进程:
ps aux | grep nginx
也可以访问 http://你的IP 验证。
5. 停止、重载等命令
./sbin/nginx -s stop # 快速停止
./sbin/nginx -s quit # 优雅停止(处理完当前请求后退出)
./sbin/nginx -s reload # 重新加载配置(不中断服务)
./sbin/nginx -t # 检查配置文件语法是否正确
6. 设置环境变量(可选)
方便在任何位置直接输入 nginx:
echo "export PATH=$PATH:~/nginx/sbin" >> ~/.bashrc
source ~/.bashrc
之后就可以直接用 nginx 命令了。