mod_proxy: Forward-Proxy speichert nichts
Jörg Peschke
- webserver
Hallo,
Ich spiele gerade ein bisschen mit einem Forward-Proxy unter Apache2 (Gentoo Linux) herum.
Mein Problem:
Das Proxy-Modul wird geladen und funktioniert auch, ein
"tail -f /var/log/apache2/access_log"
liefert mir jedesmal Output, wenn ich mit einem Browser, bei dem der Server als Proxy eingestellt witd, irgendeine Seite ansurfe.
Problem: es wird nichts im Cache abgelegt. Woran kann das liegen?
<IfModule mod_proxy.c>
<Directory proxy:*>
Order deny,allow
Allow from All
</Directory>
Listen 4713
<Virtual Host _default_:4713>
ProxyRequests On
ProxyVia On
CacheRoot "/path/to/my/directory"
CacheSize 500000
CacheGCInterval 6
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
</VirtualHost>
</IfModule>
Das Verzeichnis, was ich als CacheRoot angegeben habe, ist schreibbar für alle, der Apache müsste also da reinkommen.
PS: Ich weiss, dass einige Einstellungen etwas blauäugig oder sicherheitskritisch sind, ich will das Ding nur erstmal zum Laufen bekommen :)
hallo,
"tail -f /var/log/apache2/access_log"
liefert mir jedesmal Output, wenn ich mit einem Browser, bei dem der Server als Proxy eingestellt witd, irgendeine Seite ansurfe.
Diesen "Output" solltest du mal posten, ist ja wohl bloß eine Zeile.
Problem: es wird nichts im Cache abgelegt. Woran kann das liegen?
<IfModule mod_proxy.c>
mod_proxy _alleine_ hilft dir nicht viel. Du kennst http://httpd.apache.org/docs/2.0/mod/mod_proxy.html?
<Directory proxy:*>
Das ist vermutlich mißverständlich. Und es fehlt ein
<Proxy *>
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx
</Proxy>
<Virtual Host _default_:4713>
Den virtualHost hast du hier _innerhalb_ eines <ifModule>-Containers stehen. Warum?
PS: Ich weiss, dass einige Einstellungen etwas blauäugig oder sicherheitskritisch sind, ich will das Ding nur erstmal zum Laufen bekommen :)
Deine "Sicherheitskritik" ist vermutlich nicht das Problem. Noch nicht.
Grüße aus Berlin
Christoph S.
Hallo, Christoph,
Danke für die Antwort. Da hab ich ja gleich den richtigen, ich hab nämlich bei der Suche nach dem Problem gestern eine Seite von Dir gefunden, wo Du die Konfiguration vom Apache beschrieben hast.
Thx for sharing ;)
So aber jetzt nochmal zum Problem.
Diesen "Output" solltest du mal posten, ist ja wohl bloß eine Zeile.
Ok. Das ist ein Request an yahoo.de von meinem Firefox aus (192.168.1.6), bei dem der Apache2 als Proxy eingetragen ist:
192.168.1.6 - - [11/Nov/2005:10:15:15 +0100] "GET http://de.yahoo.com/ HTTP/1.1" 200 13969 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6"
192.168.1.6 - - [11/Nov/2005:10:15:16 +0100] "GET http://eur.i1.yimg.com/eur.yimg.com/i/de/mu/logo4.jpg HTTP/1.1" 200 2835 "http://de.yahoo.com/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6"
...
(usw, ich erspar Dir jetzt die folgenden Requests für jedes einzelne JPEG und Gif auf der Seite)
mod_proxy _alleine_ hilft dir nicht viel.
Was brauchts denn noch? Also mod_diskcache, mod_rewrite usw. sind installiert und mod_rewrite zumindest funktioniert nachweislich (Reverse-Proxy-Geschichten hab ich damit schon erfolgreich bauen können).
Das ist vermutlich mißverständlich. Und es fehlt ein
<Proxy *>
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx
</Proxy>
Sowas hab ich inzwischen eingebaut, leider auch ohne Erfolg
<Virtual Host _default_:4713>
Den virtualHost hast du hier _innerhalb_ eines <ifModule>-Containers stehen. Warum?
Ich dachte, weil ich den Virtual Host ja nur dann brauche, wenn ich den mod_proxy auch geladen habe. Macht das möglicherweise Probleme?
Wenn ja, wieso taucht dann der Request von meinem Browser im Logfile des Apaches auf?
Danke nochmal,
Jörg
hallo,
Diesen "Output" solltest du mal posten, ist ja wohl bloß eine Zeile.
192.168.1.6 - - [11/Nov/2005:10:15:15 +0100] "GET http://de.yahoo.com/ HTTP/1.1" 200 13969 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6"
Gut. Im wesentlichen kam es mir dabei auf den Statuscode an. Der ist 200, und es wurden 13969 byte ausgeliefert. Die sind bloß nicht "angekommen", aber das zu protokollieren ist nicht mehr Aufgabe der access_log.
mod_proxy _alleine_ hilft dir nicht viel.
Was brauchts denn noch?
Auf der bereits angegebenen Seite der Apache-Doku (http://httpd.apache.org/docs/2.0/mod/mod_proxy.html) findest du den Hinweis: "Apache's proxy features are divided into several modules in addition to mod_proxy: mod_proxy_http, mod_proxy_ftp and mod_proxy_connect. Thus, if you want to use one or more of the particular proxy functions, load mod_proxy _and_ the appropriate module(s) into the server (either statically at compile-time or dynamically via the LoadModule directive)."
Ich habe das "and" hervorgehoben, wie es auch die angegebene Quelle tut. Bei meinem Server habe ich testweise mal mod_proxy_http wieder auskommentiert, und siehe da: schon habe ich ähnliche "Ausfälle" wie du.
Den virtualHost hast du hier _innerhalb_ eines <ifModule>-Containers stehen. Warum?
Ich dachte, weil ich den Virtual Host ja nur dann brauche, wenn ich den mod_proxy auch geladen habe. Macht das möglicherweise Probleme?
Nein, das ist meines Wissens zulässig. Es ist nur ungewöhnlich, daher meine Nachfrage. Dein Problem liegt an anderer Stelle.
Grüße aus Berlin
Christoph S.