一: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