Wie konfiguriert man Squid3 mit Apache 2.2 als Reverse Proxy mit Cache und Loadbalancing:

Diese Konfiguration muss natürlich an die eigene Seite angepasst werden.

Squid läuft auf Port 80, die Apachen (10.10.10.x) auf Port 81.

DOMAIN.COM ist die Domain für die Squid Anfragen annehmen soll.

squid.conf
http_port 80 accel defaultsite=www.DOMAIN.COM vhost

cache_peer 10.10.10.22 parent 81 0 no-query originserver round-robin name=server22
cache_peer 10.10.10.23 parent 81 0 no-query originserver round-robin name=server23
cache_peer 10.10.10.24 parent 81 0 no-query originserver round-robin name=server24
cache_peer 10.10.10.25 parent 81 0 no-query originserver round-robin name=server25

acl sitedomains dstdomain .DOMAIN.COM
http_access allow sitedomains

cache_peer_access server22 allow sitedomains
cache_peer_access server22 deny all

cache_peer_access server23 allow sitedomains
cache_peer_access server23 deny all

cache_peer_access server24 allow sitedomains
cache_peer_access server24 deny all

cache_peer_access server25 allow sitedomains
cache_peer_access server25 deny all

Das Limit der offenene Filedeskriptoren muss an die eigene Seite angepasst werden.
ulimit -HSn 32768

Dieser Wert sollte mindestens dem doppelten der maximalen offenen Verbindungen entsprechen.

Zudem müssen die Serverlimits der einzelnen Apachen angepasst werden. Diese können niedriger angelegt werden, da Squid als Cache eingesetzt wird.

Um Apachekonforme Logs zu erhalten:
logformat combined %>a %ui %un [%{%d/%b/%Y:%H:%M:%S %z}tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

access_log /var/log/squid3/DOMAIN-access.log combined

Zur Apachekonfiguration:
 <IfModule mod_expires.c>
    ExpiresActive on
    ExpiresByType image/jpg "access 2 days"
    ExpiresByType image/gif "access 2 days"
    ExpiresByType image/png "access 2 days"
    ExpiresByType text/css "access 2 days"
    ExpiresByType text/html "access 2 minutes"
    ExpiresDefault "access 2 minutes"
 </IfModule>

Damit bleiben die Dateien für die angegebene Zeit im Cache (Browser, Intermediatecaches und Squid).

Als letzte Konfiguration, sollte logrotate so konfiguriert werden, dass die Accesslogs rotiert werden, bevor sie eine Grösse von 2 GB erreichen.
 size 1G

Dies deshalb, da (zumindest auf 32Bit Systemen) Squid sich bei einem Log von 2 GB "erhängt".