2012-10-09 10 views
28

Non ho mai impostato un proxy prima. Sto usando l'hosting condiviso, quindi per impostare le direttive di Apache, ho bisogno di usare .htaccess. Posso usare .htaccess per fare qualcosa di simile qui sotto? Eventuali limitazioni?Can ProxyPass e ProxyPassReverse possono funzionare in htaccess?

ProxyRequests Off 
ProxyPass /img/ http://internal.example.com/img/ 
ProxyPass /app/ http://internal.example.com/app/ 

ProxyPassReverse/http://internal.example.com/ 

risposta

33

You cannot use a ProxyPass in an htaccess file. La documentazione dice che è applicabile solo nel contesto:

Contesto: config server, host virtuale, directory

che esclude .htaccess (non si può avere un blocco <Directory> in .htaccess). Tuttavia, è possibile utilizzare un ProxyPassReverse per riscrivere internamente il campo Posizione delle richieste proxy che causano un reindirizzamento. Dovrai solo usare il flag P di mod_rewrite al proxy invece di ProxyPass. Quindi, qualcosa di simile a:

RewriteEngine On 
RewriteRule ^/?img/(.*)$ http://internal.example.com/img/$1 [L,P] 
RewriteRule ^/?app/(.*)$ http://internal.example.com/app/$1 [L,P] 

ProxyPassReverse/http://internal.example.com/ 

Giusto per essere chiari, non è possibile utilizzare ProxyPassoProxyPassReverse nel file .htaccess, ma si può uso ProxyPassReverse con mod_rewrite regole che utilizzano la bandiera P.

+0

Brillante! Questo mi ha davvero aiutato a capirlo. Grazie! –

+18

Non è possibile utilizzare 'ProxyPassReverse' in htaccess (http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) –

+0

Funziona, ma quando apporto una modifica a una delle pagine interne e ricarica non riesco nemmeno a vederlo colpire il server interno, anche dopo aver svuotato la cache sul browser. Questo suggerisce che qualcosa viene memorizzato nella cache sul server, ma come cambiarlo? – Michael

Problemi correlati