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。