Назад | Перейти на главную страницу

Apache2 mod_substitute not working in <location></location>

У меня есть рабочий обратный прокси-сервер, который активен только в определенном месте на моем сайте, например, в этом случае: www.example.com/reverseproxy/site1 Я использую обратное проксирование site1. Я хочу заменить какую-то часть тела каждой проксированной страницы, поэтому я попытался использовать mod_substitute, проблема в том, что я не могу заставить его работать под <Location /reverseproxy>

Это мой httpd (SSL включен):

<VirtualHost _default_:443> 

    ProxyPassInterpolateEnv On
    RewriteEngine On

    ... Some rewrite rules
    RewriteRule /?reverseproxy/http(s*):/([^\/]*)/*(.*) "http$1://$2/$3" [P]
    SSLProxyEngine On
    ProxyPassReverse "/reverseproxy/http${ssl}://${page}" http${ssl}://${page} interpolate

    SetOutputFilter INFLATE;proxy-html;SUBSTITUTE;DEFLATE;
    ProxyHTMLInterp On
    ProxyHTMLExtended Off

    ...Some ProxyURLMap
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|<body>|<body1>|"
</VirtualHost>

Этот заменитель работает, но он применим ко всем страницам, а не только к /reverseproxy. Когда я пытаюсь вставить это <Location /reverseproxy> не работает, просто игнорирует:

<Location /reverseproxy>
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|<body>|<body1>|"
</Location>

Что пробовал:

Я пробовал добавить

 RequestHeader unset Accept-Encoding

вне <Location> тег, но это не сработало

Я попытался добавить это

SetOutputFilter SUBSTITUTE;DEFLATE

в <Location /reverseproxy> пометить но не повезло

И, как кто-то предложил, попробовал с этой цепочкой фильтров

FilterDeclare filter
FilterProvider filter SUBSTITUTE "%{CONTENT_TYPE} =~ m|^text/html|"
FilterDeclare unpackGZIP
FilterProvider unpackGZIP INFLATE "resp('Content-Encoding') == 'gzip'"

<Location /reverseproxy>
FilterChain unpackGZIP filter DEFLATE

Все остальное внутри Location работает, просто вроде игнорирует подстановку.