2012-11-04 8 views
5

Devo ignorare le restrizioni di scripting cross-site per mostrare agli utenti una mappa quando fanno clic su un collegamento da un sito esterno che ho caricato all'interno di un iframe (external.com/onlyforme). Ho appreso che il modo più semplice per farlo è impostare un proxy inverso in modo che Apache recuperi external.com/onlyforme quando accedo a local.com/external e faccia in modo che appaia proveniente dal mio dominio.Proxy inverso Apache: come reindirizzare gli URL relativi nel sito esterno a se stesso?

Principalmente funziona, ma quando external.com/onlyforme/index.html prova ad accedere a external.com/onlyforme/site_media/script.js, questo viene reindirizzato a local.com/site_media/script.js, che è non quello che voglio Invece, vorrei che venisse reindirizzato all'URL corretto all'interno di external.com/onlyforme, in modo che il sito esterno funzioni come previsto.

Come posso farlo?

ho questo nel mio httpd.conf, al di fuori tutte le altre istruzioni di configurazione:

ProxyRequests Off 
ProxyPass /external/ http://www.external.com/onlyforme 
ProxyPassReverse /external/ http://www.external.com/onlyforme 

sto facendo funzionare Apache 2.2.

risposta

2

È necessario aggiungere un paio di direttive ProxyHTMLURLMap a quanto sopra, per ispezionare e riscrivere qualsiasi URL codificato nel codice HTML restituito, ad es.

ProxyRequests Off 
ProxyPass  /external/   http://www.external.com/onlyforme 
ProxyHTMLURLMap http://www.external.com/onlyforme  /external 

<Location /external/> 
    ProxyPassReverse http://www.external.com/onlyforme 
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap/   /external/ 
    ProxyHTMLURLMap /site_media /external/site_media/ 
</Location> 

Consulta anche: http://wiki.uniformserver.com/index.php/Reverse_Proxy_Server:_mod_proxy_html

0

s' arober11 risposta molto aiutato risolvere il mio problema simile. Ho cercato di restringere il campo al più breve insieme di regole possibili, e non v'è la mia configurazione per avere un Etherpad esecuzione a https://my-domain-name.wtf/pad:

<Location /pad> 
    ProxyPass http://localhost:9001 retry=0 
    # retry=0 => avoid 503's when restarting etherpad-lite 
    ProxyPassReverse http://localhost:9001 
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap http://localhost:9001 
</Location> 
RewriteRule ^/pad$ /pad/ [R]