Apache as Proxy substitui o código html / tags / text

2

Eu configurei meu servidor Apache como um servidor proxy. Eu adicionei alguns filtros ao meu arquivo proxy.conf para alterar o texto (código-fonte HTML) dos sites.

Exemplo de código:

ExtFilterDefine foodo mode=output intype=text/html
cmd="/bin/sed -r 's/foo/newfoo/g'" 
SetOutputFilter foodo

Eu também habilitei todos os mods possíveis para isso. ( mod_proxy , mod_proxy_html , ...)

Depois de usar também mod_sed para alterar algum texto, mas ainda não tenho uma solução positiva.

<Directory "/var/www/docs/sed"> 
    AddOutputFilter Sed html 
    OutputSed "s/monday/MON/g" 
    OutputSed "s/sunday/SUN/g" 
</Directory>

Aqui está o meu proxy.conf:

ProxyRequests On
ProxyVia On
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from all
</Proxy>

Alguém tem alguma ideia para esse problema?

    
por xmux 11.06.2014 / 09:34

2 respostas

7

Você deve ser capaz de usar mod_substitute . Na sua configuração de proxy, adicione:

AddOutputFilterByType SUBSTITUTE text/html
Substitute "s/foo/bar/ni"

Eu consegui trabalhar com a seguinte configuração:

<VirtualHost *:80>
        ServerName su-test.int.mtak.nl

        ProxyRequests Off
        ProxyPreserveHost Off
        ProxyPass       / http://mtak.nl/
        ProxyPassReverse / http://mtak.nl/
        RequestHeader unset Accept-Encoding

        FilterDeclare CUSTOMFILTER
        FilterProvider CUSTOMFILTER SUBSTITUTE resp=Content-Type $*
        FilterProvider CUSTOMFILTER SUBSTITUTE resp=Content-Type $/html

        <Location />
                FilterChain CUSTOMFILTER
                Substitute "s|foo|bar|ni"
        </Location>

</VirtualHost>

A linha RequestHeader unset Accept-Encoding é para garantir que o servidor web não envie uma resposta gzipada, que o Apache não poderia substituir o conteúdo de.

    
por 11.06.2014 / 15:39
2

Para o Apache > = 2.4, a sintaxe FilterProvider foi alterada. Consegui fazer o seguinte funcionar:

FilterProvider CUSTOMFILTER SUBSTITUTE "%{CONTENT_TYPE} =~ m|^text/html|"
    
por 05.02.2016 / 02:12