2012-10-09 10 views
28

Ich habe noch nie einen Proxy eingerichtet. Ich verwende Shared Hosting. Um Apache-Anweisungen zu setzen, muss ich .htaccess verwenden. Kann ich .htaccess verwenden, um etwas wie unten zu tun? Irgendwelche Einschränkungen?Können ProxyPass und ProxyPassReverse in htaccess arbeiten?

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

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

Antwort

33

You cannot use a ProxyPass in an htaccess file. Die Dokumentation sagt, dass es nur anwendbar im Kontext ist:

Kontext: Serverkonfiguration, Virtual Host, Verzeichnis

die .htaccess ausschließt (man kann nicht einen <Directory> Block in .htaccess haben). Sie können jedoch eine ProxyPassReverse verwenden, um das Standortfeld von Proxyanforderungen, die eine Umleitung verursachen, intern neu zu schreiben. Sie müssen nur mod_rewrites P Flag zu Proxy anstelle von ProxyPass verwenden. So wie etwas:

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/ 

Nur klar zu sein, können Sie nicht verwenden ProxyPassoderProxyPassReverse in der .htaccess-Datei, aber Sie können Verwendung ProxyPassReverse mit mod_rewrite Regeln, die die P Flagge nutzen.

+0

Brilliant! Das hat mir wirklich geholfen, es zu verstehen. Vielen Dank! –

+18

Sie können 'ProxyPassReverse' auch nicht in htaccess verwenden (http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) –

+0

Das funktioniert, aber wenn ich eine Änderung auf einer der internen Seiten mache und Nachladen Ich sehe nicht einmal, dass es den internen Server trifft, selbst nachdem ich den Cache im Browser gelöscht habe. Dies deutet darauf hin, dass etwas auf dem Server zwischengespeichert wird, aber wie ändert man das? – Michael

Verwandte Themen