zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    10 Mysql之数据备份与还原
    09 Mysql之创建用户和授权
    08 Mysql之Navicat工具以及Pymysql模块
    架构师成长之路之限流漫谈
    为什么程序员应该有一台 Mac 个人电脑
    Java中的锁原理、锁优化、CAS、AQS详解!
    SSM 实现支付宝支付功能(图文详解+完整代码)
    IDEA 调试图文教程,让 bug 无处藏身!
    记住:永远不要在 MySQL 中使用 UTF-8
    我爸的电脑中了勒索病毒……
  • 原文地址:https://www.cnblogs.com/jiuhaoyun/p/12047797.html
Copyright © 2011-2022 走看看