Estoy tratando de configurar Squid como un servidor de almacenamiento en caché. Tengo una LAN donde el servidor web (apache) está en 192.168.122.11
squid 192.168.122.21
y mi cliente está en 192.168.122.22
. El problema es que cuando miro el registro de acceso de Squid, todo lo que veo son TCP_MISS
mensajes. Parece que Squid no está en caché en absoluto. Verifiqué que el directorio de caché tiene todos los permisos adecuados. ¿Qué más puede salir mal aquí? Aquí está mi configuración de calamar:
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
En todas las máquinas, cona-proxy
apunta a 192.168.122.21
(agregado que en /etc/hosts
)
Salida 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
fuente
fuente
Respuestas:
En tu configuración te has perdido estas líneas:
EDITAR1:
Su servidor web no es su caché_peer. Por favor, elimine esta línea de su archivo de configuración. Squid tiene para la interoperabilidad entre cachés otro tipo de protocolo (ICP), que apache no conoce.
fuente
192.168.0.0/255.255.255.0
. Cuando agregué estas dos líneas, mi navegador diceproxy server is refusing connections
En mi experiencia, las 3 razones más comunes por las que Squid se niega a almacenar contenido en caché son:
http_access
, Pero es no el caso, debido a que está viendoTCP_MISS
líneas en su access.logrefresh_pattern
directivasrefresh_pattern
Las directivas controlan cómo Squid considera los objetos frescos o obsoletos, particularmente en relación con la forma en que su navegador realiza las solicitudes y qué control de caché se intercambian los encabezados HTTP.Las
refresh_pattern
líneas que tiene en su configuración son las líneas predeterminadas de Squid. Sin embargo, acabo de instalar Squid en Ubuntu hace 2 semanas, y con esos valores predeterminados, no almacena casi nada.La documentación de Squid sobre refresh_pattern debería explicar el significado de cada línea, pero en realidad no puedo entender qué significa esa documentación. Y aparentemente no estoy solo :)
Le sugiero que agregue uno o más de los siguientes patrones y pruebe archivos / URL específicos hasta que esté satisfecho. Ejemplo:
Con este, le está diciendo a Squid que considere todos los iconos / imágenes almacenables en caché durante al menos 1 hora hasta un máximo de medio día. Su navegador puede enviar solicitudes HTTP con encabezados de caché particulares que hacen que Squid responda de
TCP_MISS
todos modos. Para forzar las respuestas en caché, incluso rompiendo las expectativas del cliente, puede hacer esto:Lo mismo ocurre con archivos de película / audio / iso más grandes:
Si algo falla, use un poderoso martillo :) pero no lo recomiendo:
con lo que le estás diciendo a Squid que puede almacenar todo en caché durante al menos 1 hora. Sin embargo, esto seguramente romperá las aplicaciones dinámicas. Úselo si el servidor que está tratando de almacenar en caché está compuesto principalmente de contenido estático.
Además, no lo olvides
maximum_object_size
. Por defecto, son 20Mb . Si los objetos que intenta almacenar en caché son más grandes que eso, Squid no los almacenará en caché. Lo subí 10x, a 200Mb. YMMV.Por cierto, su
cache_peer
línea es incorrecta, porque apunta a Apache. Unacache_peer
charla in squid es otra instancia de squid más arriba en la jerarquía de caché, que solía ser un servidor de caché ISP en los viejos tiempos. Solo elimina esa línea.Y buena suerte :)
fuente