regex – 使用nginx proxy_pass修改Location标头
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了regex – 使用nginx proxy_pass修改Location标头,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1159字,纯文字阅读大概需要2分钟。
内容图文
我有一个nginx proxy_pass设置将/ api上的每个请求传递给后端Tomcat REST服务.在某些情况下,此服务返回一个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;
}
解决方法:
您可以使用regexp来修改它,但更好的方法是使用代理重定向:
proxy_redirect http://foo.bar/baz/ /;
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect
foo.bar/baz/的任何位置标头都会转到/
如果你只是想重定向/ baz / api,那也会有效.
如果任何重定向也添加端口,您还需要添加http://foo.bar:8080/baz/(单独重定向).
希望这可以帮助!
内容总结
以上是互联网集市为您收集整理的regex – 使用nginx proxy_pass修改Location标头全部内容,希望文章能够帮你解决regex – 使用nginx proxy_pass修改Location标头所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。