Aqui minha configuração de trabalho para o seu caso.
<VirtualHost *:80>
ServerName proxy.example.net
ProxyRequests off
ProxyPass /some/prefix/ http://backend.example.net/
ProxyPassReverse /some/prefix/ http://backend.example.net/
<Location /some/prefix/>
ProxyHTMLEnable On
ProxyHTMLExtended On
ProxyHTMLLinks a href
ProxyHTMLLinks area href
ProxyHTMLLinks link href
ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks del cite
ProxyHTMLLinks form action
ProxyHTMLLinks input src usemap
ProxyHTMLLinks head profile
ProxyHTMLLinks base href
ProxyHTMLLinks script src for
ProxyHTMLLinks iframe src
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap /wp-admin/ /some/prefix/wp-admin/
ProxyHTMLURLMap \/wp-admin\/ \/some\/prefix\/wp-admin\/
ProxyHTMLURLMap http://backend.example.net/ http://proxy.example.net/some/prefix/
</Location>
ProxyPassReverseCookieDomain backend.example.net proxy.example.net
ProxyPassReverseCookiePath / /some/prefix/
# LogLevel warn proxy_html:trace3
ErrorLog ${APACHE_LOG_DIR}/errorprox.log
CustomLog ${APACHE_LOG_DIR}/accessprox.log combined
</VirtualHost>
Algumas explicações
-
Eu tenho que definir
ProxyHTMLLinks
porque há alguns erros no log do apache abaixo. A configuração foi extraída de esta postagem do blog .[Sun Dec 21 23:02:49.053825 2014] [proxy_html:trace1] [pid 3368:tid 140385487116032] mod_proxy_html.c(823): [client 36.71.243.192:56711] No links configured: nothing for proxy-html filter to do
-
O parâmetro
RequestHeader unset Accept-Encoding
foi usado para substituir o parâmetroSetOutputFilter INFLATE;proxy-html;DEFLATE
. O efeito é o tráfego entre proxy e wordpress real não foi compactado. Consulte esta página para detalhes. -
O URL
wp-admin/admin-ajax.php
foi definido e chamado pelo javascript. O parâmetroProxyHTMLExtended On
deve fazer este trabalho. -
URL
wp-admin/admin-ajax.php
definido sem domínio (você pode vê-lo quando clicado em Exibir código de página no Firefox). Isso fez com que o parâmetrohttp://site.example.com/ /some/prefix/
não correspondesse a essa string. Então, eu defini novo parâmetro-
ProxyHTMLURLMap /wp-admin/ /some/prefix/wp-admin/
para string normal. -
ProxyHTMLURLMap \/wp-admin\/ \/some\/prefix\/wp-admin\/
para string de escape.
-