J'essaie de configurer Squid en tant que serveur de mise en cache. J'ai un LAN où le serveur Web (apache) est à 192.168.122.11
squid est à 192.168.122.21
et mon client est à 192.168.122.22
. Le problème est que lorsque je regarde le journal d'accès de Squid, je ne vois que des TCP_MISS
messages. Il semble que Squid ne mette pas du tout en cache. J'ai vérifié que le répertoire cache possède toutes les autorisations appropriées. Quoi d'autre peut mal tourner ici? Voici ma config squid:
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.1/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
http_access allow all
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 3128 accel defaultsite=cona-proxy vhost
cache_peer 192.168.122.11 parent 80 0 no-query originserver login=PAS name=webserver
cache_dir ufs /var/spool/squid3 100 16 256
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
always_direct allow all
acl server_users dstdomain cona-proxy
http_access allow server_users
cache_peer_access webserver allow server_users
cache_peer_access webserver deny all
Dans toutes les machines, cona-proxy
pointe vers 192.168.122.21
(ajouté que dans /etc/hosts
)
Sortie de curl -v 192.168.122.11
* About to connect() to 192.168.122.11 (#0)
* Trying 192.168.122.11... connected
> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libculr/7.22.0 OpneSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: 192.168.122.11
> Accept: */*
>
< HTTP/1.1 202 OK
< Date Mon, 02 Jul 2012 05:48:50 GMT
< Server: Apache/2.2.22 (Ubuntu)
< Last-Modified: Tue, 19 Jun 2012 23:04:25 GMT
< ETag: "27389-b1-4c2db4dc2c182"
< Accept_Ranges: bytes
< Content-Length: 177
< Vary: Accept-Encoding
< Content-Type: text/html
< X-Pad: avoid browser bug
<
<html><body><h1>It works!</h1>
<p>This is the default web page for the server.</p>
<p>The web server software is running but no content has been added, yet. </p>
</body></html>
* Connection #0 to host 192.168.122.11 left intact
* Closing connection #0
apache-2.2
squid
cache
Abhishek Chanda
la source
la source
Réponses:
Dans votre configuration, vous avez manqué ces lignes:
EDIT1:
Votre serveur Web n'est pas votre cache_peer. Veuillez supprimer cette ligne de votre fichier de configuration. Squid a pour l'interopérabilité entre les caches un autre type de protocole (ICP), que Apache ne connaît pas.
la source
192.168.0.0/255.255.255.0
. Quand j'ai ajouté ces deux lignes, mon navigateur ditproxy server is refusing connections
D'après mon expérience, les 3 raisons les plus courantes pour lesquelles Squid refuse de mettre en cache du contenu sont:
http_access
, mais ce n'est pas votre cas, car vous voyez desTCP_MISS
lignes dans votre access.logrefresh_pattern
directivesrefresh_pattern
les directives contrôlent la façon dont Squid considère les objets comme frais ou périmés, en particulier par rapport à la façon dont votre navigateur effectue les demandes, et quels en-têtes HTTP de contrôle de cache sont échangés.Les
refresh_pattern
lignes que vous avez dans votre configuration sont les lignes par défaut de Squid. Cependant, je viens d'installer Squid sur Ubuntu il y a 2 semaines, et avec ces valeurs par défaut, il ne cache presque rien.La documentation de Squid sur refresh_pattern devrait expliquer la signification de chaque ligne, mais je ne comprends pas vraiment ce que signifie cette documentation. Et apparemment je ne suis pas seul :)
Je vous suggère d'ajouter un ou plusieurs des modèles suivants et de tester des fichiers / URL spécifiques jusqu'à ce que vous soyez satisfait. Exemple:
Avec celui-ci, vous dites à Squid de considérer toutes les icônes / images pouvant être mises en cache pendant au moins 1 heure à un maximum d'une demi-journée. Votre navigateur peut envoyer des requêtes HTTP avec des en-têtes de cache particuliers qui obligent Squid à répondre de
TCP_MISS
toute façon. Pour forcer les réponses mises en cache, même pour briser les attentes des clients, vous pouvez procéder comme suit:Il en va de même pour les fichiers vidéo / audio / iso plus gros:
Si autre chose échoue, utilisez un puissant marteau :) mais je ne le recommande pas :
avec lequel vous dites à Squid qu'il peut tout mettre en cache pendant au moins 1 heure. Cependant, cela cassera presque certainement les applications dynamiques. Utilisez-le si le serveur que vous essayez de mettre en cache est principalement composé de contenu statique.
N'oubliez pas non plus
maximum_object_size
. Par défaut, il est 20Mb . Si les objets que vous essayez de mettre en cache sont plus gros que cela, Squid ne les mettra pas en cache. Je l'ai augmenté 10 fois, jusqu'à 200 Mo. YMMV.BTW, votre
cache_peer
ligne est incorrecte, car elle pointe vers Apache. Uncache_peer
discours in squid est une autre instance de squid plus haut dans la hiérarchie du cache, qui était habituellement un serveur de cache ISP dans le passé. Supprimez simplement cette ligne.Et bonne chance :)
la source