提到THIS问题:
UseCase:我发布了一个请求,该请求由ProxyPass / ProxyPassReverse zu更改,到达后端服务器。响应由Content-Type application / json组成,其中包含我必须手动替换的后端URL。
我的配置文件(proxy-https.conf)包含在httpd.conf中,并且通常可以正常运行(例如ProxyPass运行正常)。设置就像:
Listen 443
<VirtualHost *:443>
my rules...
</VirtualHost>
我的方法是使用mod_substitute替换json中的URL。但是无论我做什么,我都无法用它来替换后端URL:
Substitute "s|backend-server:2719|proxy-host:443|ni"
或者:
<Location "/">
SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE
AddOutputFilterByType SUBSTITUTE application/json
Substitute "s|backend-server:2719|proxy-host|ni"
</Location>
而且:我必须再次添加模块,尽管它已经添加到了httpd.conf中:
LoadModule substitute_module modules/mod_substitute.so
我的方法中是否存在一般性错误,或者我可以采用其他方法吗?也许是另一个模数?
坦克!
答案 0 :(得分:0)
好的,我自己找到答案:
LoadModule substitute_module modules/mod_substitute.so
LoadModule deflate_module modules/mod_deflate.so
FilterDeclare FnRofSGWinJSON
FilterProvider FnRofSGWinJSON SUBSTITUTE "%{CONTENT_TYPE} =~ m|^application/json|"
FilterDeclare unpackGZIP
FilterProvider unpackGZIP INFLATE "resp('Content-Encoding') == 'gzip'"
<Location "/my/pressous/path/">
FilterChain unpackGZIP FnRofSGWinJSON DEFLATE
Substitute "s|${URL_1}|${URL_2}/MarkerPath|in"
</Location>
打开是,为什么我必须再次加载模块...