Calamares no en caché


8

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.11squid 192.168.122.21y 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_MISSmensajes. 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-proxyapunta 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

Cuando realice la prueba, asegúrese de que las páginas de prueba permitan el almacenamiento en caché. Por ejemplo, las páginas SSL no están en caché.
Mircea Vutcovici

Por ahora solo tengo la página predeterminada de "Funciona" de Apache. Eso debería almacenarse bien, creo.
Abhishek Chanda

Debería agregar su configuración de calamar.
Christopher Perrin

Configuración de calamar agregada
Abhishek Chanda

1
En la solicitud de muestra que publicó, el contenido no se puede almacenar en caché.
symcbean

Respuestas:


3

En tu configuración te has perdido estas líneas:

acl myhosts src 192.168.0.0/255.255.0.0 (your internal network/netmask)
http_access allow myhosts

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.


mi red interna es 192.168.0.0/255.255.255.0. Cuando agregué estas dos líneas, mi navegador diceproxy server is refusing connections
Abhishek Chanda

1
Si está utilizando las direcciones 192.168.122.11, etc., su red no es 192.168.0.0/255.255.255.0, sino 192.168.122.0/255.255.255.0.
Jan Marek

O probablemente 192.168.0.0/255.255.0.0
Christopher Perrin el

1
Fue mi primer consejo, mira mi respuesta ... :-)
Jan Marek

¡Por supuesto! ¡Lo siento! ¡Era muy tarde / temprano cuando lo publiqué!
Christopher Perrin

7

En mi experiencia, las 3 razones más comunes por las que Squid se niega a almacenar contenido en caché son:

  • Permisos de directorio de caché, y usted se ha ocupado de eso. Bueno :)
  • http_access, Pero es no el caso, debido a que está viendo TCP_MISSlíneas en su access.log
  • refresh_pattern directivas

refresh_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_patternlí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:

refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 43200

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_MISStodos modos. Para forzar las respuestas en caché, incluso rompiendo las expectativas del cliente, puede hacer esto:

refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private

Lo mismo ocurre con archivos de película / audio / iso más grandes:

refresh_pattern -i \.(mp[34g]|swf|wav|...)$ 43200 90% 432000

Si algo falla, use un poderoso martillo :) pero no lo recomiendo:

refresh_pattern . 3600    80%     14400

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.

maximum_object_size 204800 KB

Por cierto, su cache_peerlínea es incorrecta, porque apunta a Apache. Una cache_peercharla 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 :)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.