静态 web 资源服务器
location ~ .*\.(jpg|png|gif)$ {
gzip off;#关闭压缩
root /data/www/images;
}
location ~ .*\.(html|js|css)$ {
gzip on; #启用压缩
gzip_min_length 1k; #只压缩超过1K的文件
gzip_http_version 1.1; #启用gzip压缩所需的HTTP最低版本
gzip_comp_level 9; #压缩级别,压缩比率越高,文件被压缩的体积越小
gzip_types text/css application/javascript;#进行压缩的文件类型
root /data/www/html;
}
location ~ ^/download {
gzip_static on; #启用压缩
tcp_nopush on; # 不要着急发,攒一波再发
root /data/www; # 注意此处目录是`/data/www`而不是`/data/www/download`
}
浏览器缓存
location ~ .*\.(jpg|png|gif)$ {
expires 24h;
}
跨域
location ~ .*\.json$ {
add_header Access-Control-Allow-Origin http://localhost:3000;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
root /data/json;
}
防盗链
location ~ .*\.(jpg|png|gif)$ {
expires 1h;
gzip off;
gzip_http_version 1.1;
gzip_comp_level 3;
gzip_types image/jpeg image/png image/gif;
# none没有refer blocked非正式HTTP请求 特定IP
valid_referers none blocked 47.104.184.134;
if ($invalid_referer) { # 验证通过为0,不通过为1
return 403;
}
root /data/images;
}
代理服务器
location ~ ^/api {
proxy_pass http://localhost:3000;
proxy_redirect default; #重定向
proxy_set_header Host $http_host; #向后传递头信息
proxy_set_header X-Real-IP $remote_addr; #把真实IP传给应用服务器
proxy_connect_timeout 30; #默认超时时间
proxy_send_timeout 60; # 发送超时
proxy_read_timeout 60; # 读取超时
proxy_buffering on; # 在proxy_buffering 开启的情况下,Nginx将会尽可能的读取所有的upstream端传输的数据到buffer,直到proxy_buffers设置的所有buffer们 被写满或者数据被读取完(EOF)
proxy_buffers 4 128k; # proxy_buffers 由缓冲区数量和缓冲区大小组成的。总的大小为number*size
proxy_busy_buffers_size 256k; # proxy_busy_buffers_size 不是独立的空间,他是proxy_buffers和proxy_buffer_size的一部分。nginx会在没有完全读完后端响应的时候就开始向客户端传送数据,所以它会划出一部分缓冲区来专门向客户端传送数据(这部分的大小是由proxy_busy_buffers_size来控制的,建议为proxy_buffers中单个缓冲区大小的2倍),然后它继续从后端取数据,缓冲区满了之后就写到磁盘的临时文件中。
proxy_buffer_size 32k; # 用来存储upstream端response的header
proxy_max_temp_file_size 256k; # response的内容很大的 话,Nginx会接收并把他们写入到temp_file里去,大小由proxy_max_temp_file_size控制。如果busy的buffer 传输完了会从temp_file里面接着读数据,直到传输完毕。
}
负载均衡
upstream zhufeng {
server 127.0.0.1:3000 weight=10;
server 127.0.0.1:4000;
server 127.0.0.1:5000;
}
server {
location / {
proxy_pass http://zhufeng;
}
