Calamaro non in cache


8

Sto cercando di configurare Squid come server di cache. Ho una LAN in cui il webserver (apache) è a 192.168.122.11squid 192.168.122.21e il mio client è a 192.168.122.22. Il problema è che, quando guardo il registro di accesso di Squid, vedo solo i TCP_MISSmessaggi. Sembra che Squid non stia affatto memorizzando nella cache. Ho verificato che la directory della cache abbia tutte le autorizzazioni appropriate. Cos'altro può andare storto qui? Ecco la mia configurazione di calamari:

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

In tutte le macchine, cona-proxypunta a 192.168.122.21(aggiunto che in /etc/hosts)

Uscita di 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

Quando si esegue il test, assicurarsi che le pagine di test consentano la memorizzazione nella cache. Ad esempio, le pagine SSL non vengono memorizzate nella cache.
Mircea Vutcovici,

Per ora ho solo la pagina predefinita "Funziona" di Apache. Dovrebbe essere memorizzato nella cache bene, penso.
Abhishek Chanda,

Dovrei aggiungere la tua configurazione di calamari.
Christopher Perrin,

Aggiunta configurazione di calamari
Abhishek Chanda,

1
Nella richiesta di esempio che hai pubblicato, il contenuto non è memorizzabile nella cache.
symcbean,

Risposte:


3

Nella tua configurazione hai perso queste righe:

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

Edit1:

Il tuo server web non è il tuo cache_peer. Rimuovi questa riga dal tuo file di configurazione. Squid ha per l'interoperabilità tra le cache un altro tipo di protocollo (ICP), che Apache non conosce.


la mia rete interna è 192.168.0.0/255.255.255.0. Quando ho aggiunto queste due righe, il mio browser diceproxy server is refusing connections
Abhishek Chanda,

1
Se stai utilizzando gli indirizzi 192.168.122.11 ecc., La tua rete non è 192.168.0.0/255.255.255.0, ma 192.168.122.0/255.255.255.0.
Jan Marek,

O probabilmente 192.168.0.0/255.255.0.0
Christopher Perrin il

1
Era il mio primo consiglio, vedi la mia risposta ... :-)
Jan Marek

Sicuro! Scusate! Era molto tardi / presto quando l'ho pubblicato!
Christopher Perrin,

7

Nella mia esperienza, i 3 motivi più comuni per cui Squid rifiuta di memorizzare nella cache il contenuto sono:

  • Autorizzazioni per la directory della cache e te ne sei occupato. Buona :)
  • http_access, Ma è non è il tuo caso, perché si sta vedendo TCP_MISSlinee nel tuo access.log
  • refresh_pattern direttive

refresh_pattern le direttive controllano il modo in cui Squid considera gli oggetti freschi o obsoleti, in particolare in relazione al modo in cui il browser effettua le richieste e quali intestazioni HTTP di controllo della cache vengono scambiate.

Le refresh_patternlinee che hai nella tua configurazione sono le linee predefinite di Squid. Tuttavia, ho appena installato Squid su Ubuntu 2 settimane fa e, con quelle impostazioni predefinite, non memorizza quasi nulla nella cache.

La documentazione di Squid su refresh_pattern dovrebbe spiegare il significato di ogni riga, ma in realtà non riesco a capire cosa significhi quella documentazione. E a quanto pare non sono solo :)

Ti suggerirei di aggiungere uno o più dei seguenti schemi e testare file / URL specifici fino a quando non sei soddisfatto. Esempio:

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

Con questo, stai dicendo a Squid di considerare tutte le icone / immagini memorizzabili nella cache da almeno 1 ora a un massimo di mezza giornata. Il tuo browser potrebbe inviare richieste HTTP con particolari intestazioni della cache che inducono Squid a rispondere TCP_MISScomunque. Per forzare le risposte memorizzate nella cache, anche infrangendo le aspettative dei clienti, puoi farlo:

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

Lo stesso vale per i file di film / audio / iso più grandi:

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

Se qualcos'altro fallisce, usa un potente martello :) ma non lo consiglio:

refresh_pattern . 3600    80%     14400

con cui stai dicendo a Squid che può memorizzare tutto per almeno 1 ora. Tuttavia, questo quasi sicuramente romperà le applicazioni dinamiche. Usalo se il server che stai cercando di memorizzare nella cache è composto principalmente da contenuto statico.

Inoltre, non dimenticare maximum_object_size. Per impostazione predefinita, è 20 Mb . Se gli oggetti che stai cercando di memorizzare nella cache sono più grandi, Squid non li memorizzerà nella cache. L'ho aumentato da 10 a 200 Mb. YMMV.

maximum_object_size 204800 KB

A proposito, la tua cache_peerlinea non è corretta, perché punta ad Apache. A cache_peerin squid speak è un'altra istanza di calamari più in alto nella gerarchia della cache, che in passato era un server cache ISP. Basta rimuovere quella linea.

E buona fortuna :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.