4.nginx gzip文件压缩 及跨域配置和静态资源防盗

# 开启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页面可以直接通过来进行显示。

# 如何通过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去返回一个默认图片
		}

你可能感兴趣的:(nginx,nginx,服务器,运维)