几个必设的 Nginx 参数

在使用 Nginx 作内网应用负载均衡与反向代理的时候, 一般需要下文提到的几项参数。

upstream

设定 upstream server 列表:

upstream app_servers {
    server    10.0.0.1:8888;
}

server_name

用于分派路由。

例如:

server_name  openid.intra.example.org;

listen

如果有提供用户界面,最好监听 443. 如果是完全的 SOA 的服务,可以只监听 80.

ssl

将 SSL 证书放好,指定 ssh_certificate, ssh_certificat_key. 指定协议,千万不要把 SSLv3 之类的货色丢进去。

ssl_certificate /etc/nginx/ssl/bundle.crt;
ssl_certificate_key /etc/nginx/ssl/perm.key;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

location

client_max_body_size

没有特殊的要求,使用默认配置即可。 涉及上传文件或者有批量处理的接口,最好计算一下上限,然后配置这个值,否则会有 413 报错。

client_max_body_size 10m;

proxy

配置反向代理的参数,proxy_pass 指到先前设定过的 upstream server.

proxy_redirect     off;
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_pass         http://app_servers;

access_log, error_log

应用日志混杂在 Nginx 默认的日志文件里面非常不方便查找问题。 记得配上这两个参数。