Nginx 是一款高性能 Web 服务器,也常被用作反向代理、负载均衡器、静态资源服务器和 HTTPS 网关。它的特点是占用资源少、并发能力强、配置清晰,非常适合部署网站、API 服务和前端项目。
一、安装 Nginx
在 Ubuntu / Debian 上:
bash
sudo apt update
sudo apt install nginx
在 CentOS / Rocky Linux 上:
bash
sudo dnf install nginx
在 macOS 上:
bash
brew install nginx
启动并查看状态:
bash
sudo systemctl start nginx
sudo systemctl status nginx
设置开机自启:
bash
sudo systemctl enable nginx
浏览器访问服务器 IP,如果看到 Nginx 欢迎页,说明安装成功。
二、常用目录
不同系统路径略有差异,Linux 上常见结构如下:
text
/etc/nginx/nginx.conf # 主配置文件
/etc/nginx/conf.d/ # 子配置目录
/etc/nginx/sites-available/ # 可用站点配置,部分系统有
/etc/nginx/sites-enabled/ # 已启用站点配置,部分系统有
/var/www/html/ # 默认静态资源目录
/var/log/nginx/access.log # 访问日志
/var/log/nginx/error.log # 错误日志
修改配置后,先检查语法:
bash
sudo nginx -t
确认无误后重载配置:
bash
sudo systemctl reload nginx
三、核心配置结构
Nginx 配置大致分为几层:
nginx
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
}
常见含义:
text
events:连接相关配置
http:HTTP 服务配置
server:一个虚拟主机
location:匹配请求路径
listen:监听端口
server_name:域名
root:静态文件目录
index:默认首页文件
四、部署静态网站
假设你的前端构建产物在:
text
/var/www/example
配置 Nginx:
nginx
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
try_files 对单页应用很重要,比如 Vue、React、Angular。它可以让 /user/1 这种前端路由也正确返回 index.html。
五、反向代理后端服务
假设后端服务运行在本机 3000 端口:
nginx
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
这样用户访问:
text
http://api.example.com
实际请求会被 Nginx 转发到:
text
http://127.0.0.1:3000
六、配置 HTTPS
推荐使用 Certbot 自动申请 Let's Encrypt 证书。
安装:
bash
sudo apt install certbot python3-certbot-nginx
申请证书:
bash
sudo certbot --nginx -d example.com -d www.example.com
Certbot 会自动修改 Nginx 配置,并添加 HTTPS 相关规则。
检查自动续期:
bash
sudo certbot renew --dry-run
七、负载均衡
Nginx 可以把请求分发到多个后端服务:
nginx
upstream backend {
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend;
}
}
默认是轮询策略,也就是请求依次分发到不同服务器。
八、常用命令
bash
sudo nginx -t # 检查配置
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 重启
sudo systemctl reload nginx # 平滑重载
sudo tail -f /var/log/nginx/error.log # 查看错误日志
九、常见问题
如果页面打不开,优先检查:
bash
sudo nginx -t
sudo systemctl status nginx
sudo tail -f /var/log/nginx/error.log
如果返回 403 Forbidden,通常是目录权限或缺少首页文件。
如果返回 502 Bad Gateway,通常是后端服务没有启动,或者 proxy_pass 地址写错。
如果配置修改后不生效,确认是否执行了:
bash
sudo systemctl reload nginx
十、总结
Nginx 最常用的三种场景是:
text
静态网站部署
反向代理后端服务
HTTPS 入口网关
掌握 server、location、root、try_files、proxy_pass 这几个核心配置后,就已经能完成大多数实际部署工作。真正上线时,再配合日志、HTTPS、限流、缓存和负载均衡,就可以搭建稳定可靠的 Web 服务入口。