码迷,mamicode.com
首页 > 其他好文 > 详细

nginx的高级用法

时间:2020-02-25 09:30:28      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:uri   strong   more   test   rem   移动联通   isp   高级用法   get   

一、根据url中的参数来确定缓存的key

set_by_lua_block $dataArg {
local enc = ngx.req.get_uri_args()["enc"]
local key = ngx.req.get_uri_args()["key"]
local name = ngx.req.get_uri_args()["name"]
local str = tostring(enc)..tostring(key)..tostring(name)
return str
}
proxy_cache_key $host$uri$dataArg;

二、根据源站传过来的跨域头做判断

set $cors_origin "*";
if ($http_origin != ""){
set $cors_origin $http_origin;
}
more_set_headers "Access-Control-Allow-Origin:$cors_origin";

三、根据不同的运营商走不同的upstream

1、下层传递一个请求头:

 location / {

             proxy_buffer_size  128k;

             proxy_buffers   32 32k;

             proxy_busy_buffers_size 128k;

             proxy_set_header  Host $host;

             proxy_set_header CDN ctyun;

             proxy_set_header X-Forwarded-For $remote_addr;

             proxy_set_header isp cm;   #传递一个请求头为cm(移动)

             add_header Powered-By-ctcdn "$server_addr";

             proxy_cache $cache_store;

             proxy_pass $scheme://test-upstream_$scheme$server_port;

    }

2、上层做判断

server {

    listen 80;

    server_name www.test.com;

    resolver 8.8.8.8 114.114.114.114;

    underscores_in_headers on; #nginx开启客户读取自定义头部的值

 

    error_log  /data/log/nginx/error.log;

    access_log /data/log/nginx/access.log nginxlog;

 

    location / {

             proxy_buffer_size  128k;

             proxy_buffers   32 32k;

             proxy_busy_buffers_size 128k;

             proxy_set_header  Host $host;

             proxy_set_header CDN test;

             add_header Powered "$server_addr";

             proxy_cache $cache_store;

   ##此处即下层如果有移动联通电信设备;在上层需要移动回移动的upstream;联通回联通的upstream;电信回电信的upstream;

            if ($http_isp = "ct") {

               proxy_pass $scheme://test-ct_$scheme$server_port;

        }

            if ($http_isp = "cn") {

               proxy_pass $scheme://test-cn_$scheme$server_port;

        }

            if ($http_isp = "cm") {

               proxy_pass $scheme://test-cm_$scheme$server_port;

        }

 

    }

 

3、上层upstream配置

upstream test-cm_http80 {

server 1.1.1.1:80;

}

upstream test-cn_http80 {

server 2.2.2.2:80;

}

upstream test-ct_http80 {

server 3.3.3.3:80;

}

 

nginx的高级用法

标签:uri   strong   more   test   rem   移动联通   isp   高级用法   get   

原文地址:https://www.cnblogs.com/zhangzhide/p/12359740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!