nginx通过自定义header属性来转发不同的服务
时间:2020-01-03 12:02 来源:linux.it.net.cn 作者:IT
背景:
因为后台代码变动较大,代码上线后不能支持原有的ios APP软件。然而App Store审核的时间又较长,等新代码上线后,App Store不能下载最新的ios包,导致客户不能正常访问(原有的ios包又不能继续支持)。
解决办法:
ios开发人员自定义请求头(这里自定义为newapp)
通过配置nginx 匹配请求头newapp 来转发到预发布环境(预发布为最新代码),审核通过后将nginx配置去掉即可。
核心:客户端自定义的http header,在nginx的配置文件里能直接读取到。
条件:header必须用减号“-”分隔单词,nginx里面会转换为对应的下划线“_”连接的小写单词。
修改nginx配置:
server {
listen 8008;
charset utf-8;
underscores_in_headers on;
location / {
alias d:/httpdemo/;
index index.html;
#测试header转发
if ($http_newapp = "130****8074") {
proxy_pass http://yfb_xx;
}
}
}
参数配置说明:
underscores_in_headers on:nginx是支持读取非nginx标准的用户自定义header的,但是需要在http或者server下开启header的下划线支持:
比如我们自定义header为newapp,获取该header时需要这样:$http_newapp(一律采用小写,而且前面多了个http_)
如果需要把自定义header传递到下一个nginx:
1.如果是在nginx中自定义采用proxy_set_header X_CUSTOM_HEADER $http_host;
2.如果是在用户请求时自定义的header,例如curl –head -H “X_CUSTOM_HEADER: foo” http://domain.com/api/test,则需要通过proxy_pass_header X_CUSTOM_HEADER来传递
(责任编辑:IT)
背景:
因为后台代码变动较大,代码上线后不能支持原有的ios APP软件。然而App Store审核的时间又较长,等新代码上线后,App Store不能下载最新的ios包,导致客户不能正常访问(原有的ios包又不能继续支持)。
解决办法:
ios开发人员自定义请求头(这里自定义为newapp)
通过配置nginx 匹配请求头newapp 来转发到预发布环境(预发布为最新代码),审核通过后将nginx配置去掉即可。
核心:客户端自定义的http header,在nginx的配置文件里能直接读取到。
条件:header必须用减号“-”分隔单词,nginx里面会转换为对应的下划线“_”连接的小写单词。
修改nginx配置:
server {
listen 8008;
charset utf-8;
underscores_in_headers on;
location / {
alias d:/httpdemo/;
index index.html;
#测试header转发
if ($http_newapp = "130****8074") {
proxy_pass http://yfb_xx;
}
}
}
参数配置说明:
underscores_in_headers on:nginx是支持读取非nginx标准的用户自定义header的,但是需要在http或者server下开启header的下划线支持:
比如我们自定义header为newapp,获取该header时需要这样:$http_newapp(一律采用小写,而且前面多了个http_)
如果需要把自定义header传递到下一个nginx:
1.如果是在nginx中自定义采用proxy_set_header X_CUSTOM_HEADER $http_host;
2.如果是在用户请求时自定义的header,例如curl –head -H “X_CUSTOM_HEADER: foo” http://domain.com/api/test,则需要通过proxy_pass_header X_CUSTOM_HEADER来传递
(责任编辑:IT) |