运维 Nginx

Nginx 我真正用到的配置,就这几段

每次搜 Nginx 配置,出来都是几百行的"终极指南"。但维护一个内部系统这些年,真正反复用到的就三段,记下来省得每次翻。

反代 + 传递真实 IP(最常用,没有之一):

location / {
    proxy_pass         http://127.0.0.1:5000;
    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;
}

不带 X-Forwarded-For,应用里看到的访客 IP 永远是 127.0.0.1;不带 X-Forwarded-Proto,应用不知道外面是 https,生成的跳转链接全是 http。

gzip(文本类资源必开):

gzip on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript
           application/xml image/svg+xml;

注意 gzip_types 别忘了 application/json——接口响应才是大头,默认配置里恰恰没有它。

静态资源缓存:

location ~* \.(css|js|png|jpe?g|svg|woff2)$ {
    expires 30d;
    add_header Cache-Control "public";
}
排查过程实录
排查过程实录

改完配置 nginx -t 再 reload,这个肌肉动作能救一半的事故。至于什么 worker 进程数、epoll 调优——内部系统并发两位数,那些离我还很远。配置是拿来解决问题的,不是拿来背的。