lui*_*uis 65 reverse-proxy nginx
我使用nginx作为反向代理,并尝试从上游服务器(Apache)的响应中读取自定义标头,但没有成功.Apache响应如下:
HTTP/1.0 200 OK
Date: Fri, 14 Sep 2012 20:18:29 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.10
Connection: close
Content-Type: application/json; charset=UTF-8
My-custom-header: 1
Run Code Online (Sandbox Code Playgroud)
我想从My-custom-header读取值并在if子句中使用它:
location / {
// ...
// get My-custom-header value here
// ...
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?提前致谢.
Mar*_*ers 74
当使用NGINX作为代理时,有四组标头:
\nclient -> nginx: 客户端请求头nginx -> upstream:上游请求头upstream -> nginx:上游响应头nginx -> client:客户端响应头您似乎在询问上游响应标头。这些可以在变量中找到。$upstream_http_name
但是,请考虑到只有在收到来自上游服务器响应的标头后才会设置任何响应标头。任何指令都在发送上游请求之前运行,并且无法访问任何响应标头!换句话说,ifif指令在收到客户端请求之后、发出上游请求之前运行。
如果您需要更改响应的处理方式,则可以使用指令map根据响应标头设置变量,然后在add_header(设置客户端响应标头)中使用这些变量,log_format或在响应阶段(内部)处于活动状态的任何其他指令命名为NGX_HTTP_CONTENT_PHASE和NGX_HTTP_LOG_PHASE阶段)。对于更复杂的控制,您必须使用脚本附加组件,例如Lua 模块(例如使用header_filter_by_lua_block指令)。
要读取或设置单独的标头,请使用:
\n| 从 | 到 | 类型 | 读取(变量) | 写(指令) |
|---|---|---|---|---|
| 客户 | nginx | 要求 | $http_name | \xe2\x80\x93 |
| 恩尼克斯 | 上游 | 要求 | \xe2\x80\x93 | proxy_set_header |
| 上游 | nginx | 回复 | $upstream_http_name | \xe2\x80\x93 |
| nginx | 客户 | 回复 | $sent_http_name | add_header |
proxy_NGINX 使用各种指令将某些标头从客户端请求复制到上游请求,以及从上游响应复制到客户端响应,为您提供省略或显式包含任一方向标头的选项。因此,如果仅在变量中找到上游响应标头,那么这些标头不会专门复制到客户端响应,并且可用变量集将包括NGINX 设置的任何上游响应中不存在的额外标头。$upstream_http_name$sent_http_name
cob*_*aco 73
$ http _ name_of_the_header_key
即如果你有origin = domain.com标题,你可以$http_origin用来获取" domain.com "
在nginx中确实支持任意请求头字段.在上面的示例中,变量名称的最后一部分是字段名称转换为小写,其中破折号由下划线替换
参考文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_
对于你的例子,变量将是$http_my_custom_header.
Dev*_*ain 42
我面临同样的问题.我试过了两次$http_my_custom_header,$sent_http_my_custom_header但它对我不起作用.
虽然通过使用解决了这个问题$upstream_http_my_custom_header.
使用$ http_MY_CUSTOM_HEADER
你可以写一些像
set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80885 次 |
| 最近记录: |