TL;DR
是什么:高性能 Web 服务器、反向代理和负载均衡器。
为什么:静态文件服务快、高并发处理能力强、适合 API 代理。
Quick Start
安装:
# macOS
brew install nginx
# Ubuntu/Debian
sudo apt install nginx
# CentOS/RHEL
sudo yum install nginx
启动/停止:
# 启动
sudo nginx
# 停止
sudo nginx -s stop
# 重载配置(无停机)
sudo nginx -s reload
# 测试配置
sudo nginx -t
配置文件位置:
- macOS:
/usr/local/etc/nginx/nginx.conf - Linux:
/etc/nginx/nginx.conf
静态文件服务:
# /etc/nginx/sites-available/mysite
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
}
Cheatsheet
| 配置 | 描述 |
|---|---|
listen 80; | 监听 80 端口 |
server_name domain.com; | 虚拟主机 |
root /path; | 文档根目录 |
index index.html; | 默认文件 |
location /api { } | URL 匹配 |
proxy_pass http://localhost:3000; | 反向代理 |
try_files $uri $uri/ =404; | SPA 回退 |
反向代理:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Gotchas
403 Forbidden
# 检查文件权限
ls -la /var/www/html
# 修复所有权
sudo chown -R www-data:www-data /var/www/html
# 检查 SELinux(CentOS)
sudo setenforce 0 # 临时禁用
配置语法错误
# 重载前务必测试
sudo nginx -t
# 查看错误日志
tail -f /var/log/nginx/error.log
80 端口被占用
# 查找占用 80 端口的进程
sudo lsof -i :80
# 终止进程或使用其他端口
listen 8080;
启用站点配置
# Linux:创建符号链接
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
sudo nginx -s reload