【发布时间】:2013-11-03 07:25:13
【问题描述】:
我有一个 nginx proxy_pass 设置将/api 上的每个请求传递到后端 Tomcat REST 服务。在某些情况下,此服务会返回一个 Location 标头,该标头会根据请求的类型而有所不同,例如 Location: http://foo.bar/baz/api/search/1234567 -- baz 部分是因为它托管在 Tomcat 上。
我当前的配置正确地重写了foo.bar 主机名,但保持baz 部分完好无损。我想去掉这个,但 proxy_pass 选项似乎仅限于清除或设置标题的新值。
有没有办法在传递给客户端之前动态修改标头,例如使用正则表达式替代?这是我的 nginx 配置:
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
proxy_redirect off;
proxy_pass http://foo.bar:8080/baz/api;
}
【问题讨论】:
标签: regex nginx header rewrite proxypass