Nginx拓展功能合集

一:NGINX跨域解决方式

  #是否允许请求带有验证信息
    add_header Access-Control-Allow-Credentials true;
    #允许跨域访问的域名,可以是一个域的列表,也可以是通配符*
    add_header Access-Control-Allow-Origin  http://static.enjoy.com;
    #允许脚本访问的返回头
    add_header Access-Control-Allow-Headers 'x-requested-with,content-type,Cache-Control,Pragma,Date,x-timestamp';
    #允许使用的请求方法,以逗号隔开
    add_header Access-Control-Allow-Methods 'POST,GET,OPTIONS,PUT,DELETE';
    #允许自定义的头部,以逗号隔开,大小写不敏感
    add_header Access-Control-Expose-Headers 'WWW-Authenticate,Server-Authorization';
    #P3P支持跨域cookie操作
    add_header P3P 'policyref="/w3c/p3p.xml", CP="NOI DSP PSAa OUR BUS IND ONL UNI COM NAV INT LOC"';
    if ($request_method = 'OPTIONS') {##OPTIONS类的请求,是跨域先验请求
            return 204;##204代表ok
        }

nginx请求分为简单请求和复杂请求

①简单请求: 

当发起简单请求时,网页请求头里包含了

 

这个信息,网页就知道你这个页面是允许跨域的,他就会请求这个域名的后台代码,发起跨域请求

②复杂请求:

当发起复杂请求的时候,上面的配置就不会生效了,因为当nginx检测后,发现你是复杂请求,他不会请求跨域的网站后台代码,他会先询问你的网页是否允许我跨域访问,你如果允许我跨域,那我就请求,不允许就报错。

起关键作用的就是

二:压缩文件

  location ~ /(.*).(html|js|css|png)$ {
        gzip on; # 启用gzip压缩,默认是off,不启用
        
        # 对js、css、jpg、png、gif格式的文件启用gzip压缩功能
        gzip_types application/javascript text/css image/jpeg image/png image/gif;
        gzip_min_length 1024; # 所压缩文件的最小值,小于这个的不会压缩
        gzip_buffers 4 1k; # 设置压缩响应的缓冲块的大小和个数,默认是内存一个页的大小
        gzip_comp_level 1; # 压缩水平,默认1。取值范围1-9,取值越大压缩比率越大,但越耗cpu时间
        
        root /etc/nginx/html/gzip;
    }

网络连接中,js,css等文件的大小有可能很大,一次请求传输的js,css文件中传输的时间会很大,所以nginx会将这些文件先压缩,然后再进行传输,以达到节省网络带宽,提高网站速度的作用. 

三:防盗链(很少用)

  location ^~ /mall {
        valid_referers *.enjoy.com;##对referer进行校验
            if ($invalid_referer) {##校验不过,拒绝访问 
                return 404;
            }
                root /etc/nginx/html/gzip;
        }

 nginx会检测你的请求是否来自  *.enjoy.com 网站的请求,如果不是则返回404

原文地址:https://www.cnblogs.com/jiuhaoyun/p/12047797.html