proxy_pass_request_headers off的坑
2017-11-19 01:12
447 查看
举个例子,客户端访问80端口,服务器需要将请求转发至8080端口处理,
我们希望将客户端传递的headers过滤,再设置内部转发请求header(test:"123"),
坑(通过ngx.req.set_header设置的请求头,会被过滤):
正确做法(传递header,重新设置):
原文出自:http://blog.csdn.net/daiyudong2020/article/details/78572442
End;
我们希望将客户端传递的headers过滤,再设置内部转发请求header(test:"123"),
坑(通过ngx.req.set_header设置的请求头,会被过滤):
server { listen 80; location / { content_by_lua ' ngx.req.set_header("test", "123") local response = ngx.location.capture("/upstream", { method = ngx.HTTP_GET, vars = { my_uri = "/hello", }, body = "", } ) ngx.exit(200) '; } location /upstream { set $my_uri $my_uri; proxy_pass_request_headers off; proxy_pass http://127.0.0.1:8080$my_uri; } } server { listen 8080; location /hello { content_by_lua ' for k, v in pairs(ngx.req.get_headers()) do ngx.log(ngx.ERR, "###: " .. k .. " : " .. v) end '; } }
正确做法(传递header,重新设置):
server { listen 80; location / { content_by_lua ' local response = ngx.location.capture("/upstream", { method = ngx.HTTP_GET, vars = { my_uri = "/hello", my_test = "123", }, body = "", } ) ngx.exit(200) '; } location /upstream { set $my_uri $my_uri; set $my_test $my_test; proxy_pass_request_headers off; proxy_set_header test $my_test; proxy_pass http://127.0.0.1:8080$my_uri; } } server { listen 8080; location /hello { content_by_lua ' for k, v in pairs(ngx.req.get_headers()) do ngx.log(ngx.ERR, "###: " .. k .. " : " .. v) end '; } }
原文出自:http://blog.csdn.net/daiyudong2020/article/details/78572442
End;
相关文章推荐
- Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight respon
- apache_request_headers()函数非标准HTTP头
- nginx location节点 proxy_pass 中的”/”
- Nginx rewrite 规则 与 proxy_pass 实现
- nginx中配置proxy_pass
- Nginx配置proxy_pass
- http协议学习系列(请求头---Request Headers)
- Request header field Access-Control-Allow-Headers is not allowed by Access-Control-Allow-Headers
- php proxy for jquery ajax cross site request
- [scrapy] 爬了第一页就停止 filtered off site request to
- ProxyPassMatch RewriteRule[L,P]差别
- 获取 头信息函数 apache_request_headers
- Error:Unable to tunnel through proxy. Proxyreturns "HTTP/1.1 400 Bad Request"
- nginx 代理 proxy_pass设置
- @RequestMapping Annotation with Controller, Methods, Headers, Params, @RequestParam, @PathVariable
- 问题:request.Headers;结果:HttpWebRequest.Headers 属性
- c#中HttpWebRequest使用Proxy实现指定IP的域名请求
- Using RestTemplate, how to send the request to a proxy first so I can use my junits with JMeter?
- nginx proxy_pass 和 proxy_redirect
- HTTP Status 406 --- not acceptable according to the request "accept" headers