Nginx优化

nginx 的优化分为两个小方向:性能优化 & 安全优化

性能优化

开启gzip压缩

gzip on;
gzip_min_length  256;
# 对大于256字节的进行压缩
gzip_buffers     32 4k; 
# 每块压缩的内存页4k,最多可申请32块
gzip_http_version 1.1|1.0;
# 只对http 1.1和1.0版本进行压缩
gzip_comp_level 3;
# 压缩的等级1-9,1级别占用CPU最低,依次往上
gzip_types  text/css text/js text/xml application/javascript;
# 压缩的类型
gzip_proxied any
# 作为反向代理时,开启gzip压缩
gzip_vary on;
# 是否通知后端已经做了gzip压缩
gzip_disable “msie6”;
# 关闭 IE6 的压缩。

使用expires 缓存

    location ~^/(images|javascript|js|css|flash|media|static)/ {
      expires 30d;
    }

     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${
      expires      3650d;
    }

使用epoll模型

use epoll;

配置多个work进程

与CPU的核数相等 or CPU的核数 X2 | auto 自动分配也可以

调整当进程的最大连接数

worker_connections  20480;

调整进程可打开的的最大文件数

worker_rlimit_nofile 65535;

设置连接超时

keepalive_timeout  300;

JAVA应用经量使用长连接、如果是PHP的尽量使用短连接,因为Java应用要消耗的资源和时间要比PHP跟多(具体依然要看业务)

客户端请求头超时时间/大小

client_header_timeout 15s;    
client_header_buffer_size 10k;

客户端请求主体超时时间

client_header_timeout 15s;

用户上传大小的限制

client_max_body_size        10m;

开启高效文件传输模式

sendfile       on;
tcp_nopush     on;
aio            on;

为后端代理服务器设置缓冲区

proxy_buffering on;
proxy_buffer_size 64k;
proxy_buffers   4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

制定客户端的超时时间

send_timeout 300s;

开启ssl缓存

ssl_prefer_server_ciphers    on;
ssl_session_cache            builtin:1000 shared:SSL:10m;
# 分配一块10MB的内存给nginx做证书的缓存空间
ssl_session_timeout          10m;
# 设置缓存空间的超时时间为10分钟

静态文件缓存

open_file_cache max=1000 inactive=600s;
# 缓存1000个文件,在600秒内最少使用2次
open_file_cache_min_user 2;
open_file_cache_errors on
# 开启淘汰
open_file_cache_valid 30s;
# 每隔30秒去检查缓存文件的源信息

安全优化

隐藏版本号

server_tokens off;

更改默认用户组

user    nginx;

静止解析制定目录下的特定文件

location ~ ^/images/.*\.(php|php5|.sh|.pl|.py)$ 
        { 
              deny all; 
        } 

限制及指定IP或IP段访问

location / { 
    deny 192.168.1.1; 
    allow 192.168.1.0/24; 
    deny all; 
}

限制非法IP

if ($remote_addr = 10.0.0.2 ) {
    return 403;
}

禁止非法域名解析访问

if ($host !~ caizhe/.org$){
    return 500;
}

server {
    listen 80 default;
    return 500;
}

限制访问频率

http {    
limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;

server {
limit_req zone=one burst=5;

错误页面优雅显示

error_page   500 501 502 503 504  https://caizhe.org;
error_page      400 403 404 405 408 410 411 412 413 414 415 https://caizhe.org;

使用普通用户启动nginx

发表评论