背景
因此我有一台服务器运行隐藏在Apache代理后面的tomcat应用程序.代理提供了更加用户友好的URL以及具有自动重定向的SSL加密,因此只能通过https访问该应用程序.
我正忙着将它迁移到nginx代理.
我遇到的一个问题是,在登录时,我的应用程序以http的形式发回一个"LocationAfterLogon"标题.
http://192.168.x.x:8080/myapp/index.jsp.
Run Code Online (Sandbox Code Playgroud)
返回的IP地址来自在互联网上不可见的代理服务器.因此,浏览器尝试导航到它时会出现连接错误.
作为一种解决方法,我使用了nginx指令:
所以我的配置如下所示
#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;
Run Code Online (Sandbox Code Playgroud)
问题
我需要能够在LocationAfterLogon上进行正则表达式替换或类似操作,因为它并不总是指向index.jsp,具体取决于登录页面拦截了哪个URL.
我知道我也可以重写tomcat应用程序来发回相对URL,但我想在nginx配置中完成所有操作.
我也读过关于nginx more_set_headers的内容.尚未尝试过.它允许我编辑标题吗?
Apache有我之前使用的Header编辑指令,所以我正在寻找类似的东西.
TL; DR
是否可以使用正则表达式替换或在Nginx中类似编辑标题位置?
VBa*_*art 10
您可以使用该map指令重写标头:
map $upstream_http_locationafterlogon $new_location {
~regexp new_value;
}
proxy_hide_header LocationAfterLogon;
add_header LocationAfterLogon $new_location;
Run Code Online (Sandbox Code Playgroud)
请参阅文档:http://nginx.org/en/docs/http/ngx_http_map_module.html
| 归档时间: |
|
| 查看次数: |
13847 次 |
| 最近记录: |