# 开启gzip
gzip on;
# 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
gzip_min_length 1k;
# gzip 压缩级别 1-10
gzip_comp_level 3;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
说明:
不是压缩级别越高越好,其实gzip_comp_level 1的压缩能力已经够用了,后面级别越高,压缩的比例其实增长不大,反而很吃CPU性能。
另一方面,压缩一定要和静态资源缓存相结合,缓存压缩后的版本,否则每次都压缩高负载下服务器肯定吃不住。
跨域配置:
跨域支持配置如下:
# 指定允许跨域的方法,*代表所有
add_header Access-Control-Allow-Methods *;
# 预检命令的缓存,如果不缓存每次会发送两次请求
add_header Access-Control-Max-Age 3600;
# 带cookie请求需要加上这个字段,并设置为true
add_header Access-Control-Allow-Credentials true;
# 表示允许这个域跨域调用(客户端发送请求的域名和端口)
# $http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请求不支持*号 $指可以换成
add_header Access-Control-Allow-Origin $http_origin;
# 表示请求头的字段 动态获取 $指可以换成 *
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
server {
listen 80;
server_name localhost;
# 指定允许跨域的方法,*代表所有
add_header Access-Control-Allow-Methods *;
# 预检命令的缓存,如果不缓存每次会发送两次请求
add_header Access-Control-Max-Age 3600;
# 带cookie请求需要加上这个字段,并设置为true
add_header Access-Control-Allow-Credentials true;
# 表示允许这个域跨域调用(客户端发送请求的域名和端口)
# $http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请求不支持*号 $指可以换成
add_header Access-Control-Allow-Origin $http_origin;
# 表示请求头的字段 动态获取 $指可以换成 *
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
在上面的跨域配置下配置如下。
# 什么是静态资源盗链:
# 你服务器上的一张图片,127.0.0.1/images/a.png
# 别人的html页面可以直接通过<img src="127.0.0.1/images/a.png" />来进行显示。
# 如何通过Nginx防止资源盗链
# valid_referers指令:会通过查看请求头的referer内容自动和valid_referers指令设置的内容进行匹配,
# 如果匹配到了就将$invalid_referer变量值设置为0,否者就设置为1,匹配的过程是不区分大小写的
# 语法:valid_referers nont | blocked | server_names | string
# 默认值: 无
# 位置:server、location
# none:如果请求头中的Referer为空,则允许访问
# blocked:Referer不为空,但是改制呗防火墙或者代理进行伪装过,如果不带"httpL//"、"https://"等协议的资源允许访问
# server_names:指定具体的域名或者ip
# string:可以支持正则表达式和*的字符串。如果是正则表达式,需要以~开头标识。
valid_referers none bocked www.baidu.com 192.168.200.222 *.example.com example.* ~\.google\.
if ($invalid_referer){ # 如果匹配到了就将$invalid_referer变量值设置为0,否者就设置为1,匹配的过程是不区分大小写的
return 403; # 403未找到资源 或者通过rewrite去返回一个默认图片
}