1、隐藏nginx header里版本号信息

server_tokens off;

2、更改掉nginx默认用户及用户组

user nginx;

3、根据cpu核数进行nginx进程优化

一般设置为cpu核数或则核数x2,用top按1查看

四核cpu配置:
worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;
八核cpu服务器参数配置:
worker_processes    8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000;

4、上传文件大小限制

client_max_body_size 10m;

5、配置nginx gzip压缩功能

# 开启压缩功能
gzip on;
# 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。
gzip_min_length  1k;
# 压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_buffers     4 32k;
# 压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可
gzip_http_version 1.1;
# 压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。
gzip_comp_level 9;
# 用来指定压缩的类型,'text/html'类型总是会被压缩。
gzip_types  text/css text/xml application/javascript;
# vary header支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据。
gzip_vary on;

6、nginx错误页面优雅显示

阿里门户天猫网站的nginx优雅显示配置案例
error_page 500 501 502 503 504 http://err.tmall.com/error2.html;
error_page 400 403 404 405 408 410 411 412 413 414 415 http://err.tmall.com/error1.html;

7、反向代理

location / {
    # 设置反向代理
    proxy_pass http://192.168.1.121:8080/;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

# 设置资源反向代理
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    proxy_pass http://192.168.1.121:8080/;
}
# 设置反向代理
location ~ .*\.(js|css|html)?$ {
    proxy_pass http://192.168.1.121:8080/;
}

8、配置信息

server {
    listen   80;
    listen 443 ssl spdy;  # 不兼容80的时候,就不用这个ssl和spdy指定了
    server_name www.domain.com; # 填写绑定证书的域名
    # ssl和https配置
    ssl on;
    ssl_certificate www.domain.com.crt; # 公钥
    ssl_certificate_key www.domain.com.key;# 私钥
    ssl_session_cache shared:SSL:20m; # 缓存池  缓存大小设置为 20M,大概能放下 80000 个会话
    ssl_session_timeout  10m;  # 缓存时间
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 只启用 TLS 系列协议
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE:!kEDH;# 按照这个套件配置
    # 完整参考 ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:RC4-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!EDH:!kEDH:!PSK:!SRP:!kECDH;
    ssl_prefer_server_ciphers on;
    # 可选 以下三行 启用 OCSP  可以让浏览器更快的获取证书撤销状态
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /you/path/to/domain.chain.crt;  # ROOT证书链
    # 启用 HSTS 用于通知浏览器强制使用 https 通信
    add_header Strict-Transport-Security "max-age=31536000";
    resolver 8.8.8.8 8.8.4.4 valid=300s; # 国外
    resolver 223.5.5.5 223.6.6.6 valid=300s; # 国内
    resolver_timeout 10s;

    location / {
        root   html; # 站点目录
        index  index.html index.htm;
    }
}

配置完成后,先用nginx -t来测试下配置是否有误,正确无误的话,重启nginx。就可以访问了。