nginx的高级用法

一、根据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;

}

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

时间: 2024-10-13 01:14:17

nginx的高级用法的相关文章

nginx篇高级用法之基于TCP/UDP的四层调度

nginx 从1.9版本开始支持基于TCP/UDP的四层调度,在编译nginx时使用--with-stream开启该模块 支持TCP/UDP调度时,支持给所有的软件做调度器,例如:nfs smb ftp dns 等等... 在编译时: ./configure --with-http_ssl_module --with-stream 开启该模块 准备环境: 为了区分ftp1 和ftp2 他们各自放的共享内容不同 ftp1:192.168.2.100   /var/ftp/password ftp2

Ansible高级用法

Ansible playbook的核心元素: tasks: 任务 variables: 变量 templates: 模板 handlers: 处理器 roles: 角色 变量: facts --extra-vars "name=value name=value" role定义 Inventory中的变量: 主机变量 hostname name=value name=value 组变量 [groupname:vars] name=value name=value Inventory的高级

Ansible的高级用法playbook

Ansible的高级用法playbook Ansible入门 playbook工作过程 YAML特性    YAML的可读性好    YAML和脚本语言的交互性好    YAML使用实现语言的数据类型    YAML有一个一致的信息模型    YAML易于实现    YAML可以基于流来处理    YAML表达能力强,扩展性好 YAML语法简介   1. 在单一档案中,可用连续三个连字号(--)区分多个档案.另外,还有选择性的连续三个点号( ... )用来表示档案结尾   2. 次行开始正常写P

jquery on高级用法

on()的高级用法 针对自己处理机制中,不仅有on方法,还有根据on演变出来的live方法(1.7后去掉了),delegate方法等等.这些方法的底层实现部分 还是on方法,这是利用了on的另一个事件机制委托的机制衍变而来的 委托机制 .on( events ,[ selector ] ,[ data ], handler(eventObject) ) 在on的第二参数中提供了一个selector选择器,简单的来描述下 参考下面3层结构 <div class="left">

Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

&lt;06&gt;变量使用前易犯错误总结+if语句介绍及基本格式+if-else语句及嵌套+if语句的高级用法+if语句的使用注意点+arc4random_uniform 函数导入一个头文件&lt;stdlib.h&gt;+

1)变量要初始化 -1 0  ,或者1 依据程序而定 ---------------------------------- if语句介绍及基本格式 分支语句结构 1)if 格式: if(表达式/常量/变量){ 语句块1; } 原理: 1)先计算小括号中的表达式的值 真(1) 会执行 大括号中的语句 假(0) 不会执行 大括号中的语句 2) switch 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5

JS Replace() 高级用法(转)

在很多项目中,我们经常需要使用JS,在页面前面对前台的某些元素做做修改,js 的replace()方法就必不可少. 经常使用"ABCABCabc".replace("A","B")的同学应该会比较清楚,改语句的最终结果是BBCABC,这种方法只能替换 第一个匹配的元素.如果替换所有呢?使用正则表达式即可: "ABCABCabc".replace(/A/g,"B") 即可. 那如果想替换A的同时也可以替换a呢

Python爬虫的Urllib库有哪些高级用法?

本文和大家分享的主要是python爬虫的Urllib库的高级用法相关内容,一起来看看吧,希望对大家学习python有所帮助. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS.CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服.所以最重要的部分是存在于HTML中的,下面我 们就写个例子来扒一个网页下来. imp

GUN sed高级用法,sed脚本编写

这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [[email protected] ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 setup-2.8.14-20.el6_4.1.noarch tzdata-2013g-1.el6.noarch jakarta-commons-collections-3.2.1-3.4.el6.noarch filesystem-2.4.30-3.el6.x86_64 mesa-dr