在nginx中编辑标题值
背景在nginx中编辑标题值,nginx,Nginx,背景 所以我有一个运行tomcat应用程序的服务器,隐藏在Apache代理后面。该代理提供了一个更加用户友好的url以及带有自动重定向的SSL加密,因此该应用程序只能通过https访问 我正忙着将其迁移到nginx代理 我遇到的一个问题是,在登录时,我的应用程序在http响应中以 http://192.168.x.x:8080/myapp/index.jsp. 返回的IP地址来自代理服务器,在internet上不可见。因此,浏览器在尝试导航到它时会出现连接错误 作为一种解决方法,我使用了ng
所以我有一个运行tomcat应用程序的服务器,隐藏在Apache代理后面。该代理提供了一个更加用户友好的url以及带有自动重定向的SSL加密,因此该应用程序只能通过https访问 我正忙着将其迁移到nginx代理 我遇到的一个问题是,在登录时,我的应用程序在http响应中以
http://192.168.x.x:8080/myapp/index.jsp.
返回的IP地址来自代理服务器,在internet上不可见。因此,浏览器在尝试导航到它时会出现连接错误
作为一种解决方法,我使用了nginx指令:
- proxy_hide_标头:隐藏从代理服务器返回的LocationAfterLogin标头
- add_header:添加新的LocationAfterLogin url
#header for location after logon of demo app
add_header LocationAfterLogon http://example.com/demo/index.jsp;
#hide the real LocationAfterLogon
proxy_hide_header LocationAfterLogon;
问题我需要能够在LocationAfterLogon上执行regex替换或类似操作,因为它并不总是指向index.jsp,这取决于登录页面截获的url 我知道我也可以重写tomcat应用程序,以发送回一个相对URL,但我想在nginx config中完成这一切 我也读过关于nginx more_set_头的文章。我还没试过。它允许我编辑标题吗 Apache有我之前使用的头编辑指令,所以我正在寻找类似的东西 TL;DR
是否可以在Nginx中使用regex replace或类似工具编辑标题位置?您可以使用
map
指令重写标题:
map $upstream_http_locationafterlogon $new_location {
~regexp new_value;
}
proxy_hide_header LocationAfterLogon;
add_header LocationAfterLogon $new_location;
请参阅文档:为什么它在登录后发送
LocationAfterLogon
而不是Location
?Nginx自动“修复”location
header。