Estou tentando configurar o Squid como um servidor de cache. Eu tenho uma LAN onde o servidor web (apache) está no 192.168.122.11
squid 192.168.122.21
e no meu cliente está no 192.168.122.22
. O problema é que, quando olho para o log de acesso do Squid, tudo o que vejo são TCP_MISS
mensagens. Parece que o Squid não está em cache. Eu verifiquei se o diretório de cache tem todas as permissões adequadas. O que mais pode dar errado aqui? Aqui está minha configuração do 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
Em todas as máquinas, cona-proxy
aponta para 192.168.122.21
(adicionado isso em /etc/hosts
)
Saída 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
fonte
fonte
Respostas:
Na sua configuração, você perdeu estas linhas:
EDIT1:
Seu servidor da web não é seu cache_peer. Por favor, remova esta linha do seu arquivo de configuração. O Squid possui para interoperabilidade entre caches outro tipo de protocolo (ICP), que o apache não conhece.
fonte
192.168.0.0/255.255.255.0
. Quando adicionei essas duas linhas, meu navegador dizproxy server is refusing connections
Na minha experiência, os três motivos mais comuns pelos quais o Squid se recusa a armazenar em cache o conteúdo são:
http_access
, Mas é não o seu caso, porque você está vendoTCP_MISS
linhas em seu access.logrefresh_pattern
diretrizesrefresh_pattern
As diretivas controlam como o Squid considera objetos novos ou obsoletos, principalmente em relação à maneira como o navegador faz as solicitações e a qual controle de cache os cabeçalhos HTTP são trocados.As
refresh_pattern
linhas que você tem na sua configuração são as linhas padrão do Squid. No entanto, eu instalei o Squid no Ubuntu há duas semanas e, com esses padrões, ele não armazena quase nada.A documentação do Squid sobre refresh_pattern deve explicar o significado de cada linha, mas na verdade não consigo entender o que essa documentação significa. E aparentemente eu não estou sozinho :)
Sugiro que você adicione um ou mais dos seguintes padrões e teste arquivos / URLs específicos até ficar satisfeito. Exemplo:
Com este, você está dizendo ao Squid para considerar todos os ícones / imagens armazenáveis em cache por pelo menos 1 hora a no máximo meio dia. Seu navegador pode enviar solicitações HTTP com cabeçalhos de cache específicos que fazem com que o Squid responda de
TCP_MISS
qualquer maneira. Para forçar respostas em cache, mesmo quebrando as expectativas do cliente, você pode fazer o seguinte:O mesmo vale para arquivos maiores de filme / áudio / iso:
Se algo mais falhar, use um poderoso martelo :), mas eu não recomendo isso:
com o qual você está dizendo ao Squid que ele pode armazenar tudo em cache por pelo menos 1 hora. No entanto, isso quase certamente interromperá aplicativos dinâmicos. Use-o se o servidor que você está tentando armazenar em cache for composto principalmente de conteúdo estático.
Além disso, não esqueça
maximum_object_size
. Por padrão, é 20Mb . Se os objetos que você está tentando armazenar em cache forem maiores que isso, o Squid não os armazenará em cache. Eu aumentei 10x, para 200Mb. YMMV.BTW, sua
cache_peer
linha está incorreta, porque aponta para o Apache. Umacache_peer
fala no squid é outra instância do squid mais alta na hierarquia de cache, que costumava ser um servidor de cache do ISP nos velhos tempos. Apenas remova essa linha.E boa sorte :)
fonte