装
Ubuntu / Debian:
sudo apt install nginx
sudo systemctl enable --now nginx
打开浏览器访问服务器 IP,看到 Nginx 默认欢迎页 = 装好了。
配置文件位置
/etc/nginx/nginx.conf 主配置
/etc/nginx/sites-available/ 可用站点
/etc/nginx/sites-enabled/ 启用中的站点(软链到 sites-available)
每个站点一个文件——别都写在主配置里。
静态站点配置
/etc/nginx/sites-available/wadely:
server {
listen 80;
server_name wadely.com www.wadely.com;
root /var/www/wadely;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
启用:
sudo ln -s /etc/nginx/sites-available/wadely /etc/nginx/sites-enabled/
sudo nginx -t # 永远先测试配置
sudo systemctl reload nginx # reload 不断连接
反向代理:把请求转给后端
后端 Node 跑在 3000 端口,Nginx 把 80 转过去:
server {
listen 80;
server_name api.wadely.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;
}
}
那四个 proxy_set_header 是必抄项——后端拿到真实 IP 和协议要靠它们。
几个常用块
gzip 压缩
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;
限频
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
server {
location /api {
limit_req zone=api burst=20;
proxy_pass ...;
}
}
静态资源长缓存
location ~* \.(css|js|woff2|png)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
WebSocket 支持
location /ws {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
常用命令
sudo nginx -t # 检查配置
sudo systemctl reload nginx # 不断流重载
sudo systemctl restart nginx # 完整重启
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
下一篇:给这个站点加 HTTPS。