Я пытаюсь настроить Squid в качестве кеширующего сервера. У меня есть локальная сеть, где веб-сервер (apache) находится на 192.168.122.11
Squid, 192.168.122.21
а мой клиент на 192.168.122.22
. Проблема в том, что когда я просматриваю журнал доступа Squid, я вижу только TCP_MISS
сообщения. Кажется, Squid вообще не кеширует. Я проверил, что каталог кеша имеет все необходимые разрешения. Что еще может пойти не так? Вот мой конфиг 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
Во всех машинах cona-proxy
указывает на 192.168.122.21
(добавил, что в /etc/hosts
)
Выход из 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
Абхишек Чанда
источник
источник
Ответы:
В вашем конфиге вы пропустили следующие строки:
EDIT1:
Ваш веб-сервер не ваш cache_peer. Пожалуйста, удалите эту строку из вашего конфигурационного файла. У Squid есть возможность взаимодействия между кешами другого типа протокола (ICP), который apache не знает.
источник
192.168.0.0/255.255.255.0
. Когда я добавил эти две строки, мой браузер говоритproxy server is refusing connections
По моему опыту, 3 наиболее распространенные причины, по которым Squid отказывается кэшировать контент:
http_access
, но это не ваш случай, потому что вы видитеTCP_MISS
строки в вашем access.logrefresh_pattern
директивыrefresh_pattern
директива (ы) контролирует, как Squid считает объекты новыми или устаревшими, особенно в отношении того, как ваш браузер делает запросы, и какой обмен кэшем контролирует HTTP-заголовки.Эти
refresh_pattern
строки , которые вы имеете в конфигурации по умолчанию являются строками кальмара. Тем не менее, я только что установил Squid на Ubuntu 2 недели назад, и с этими настройками по умолчанию он почти ничего не кэширует.Документация Squid о refresh_pattern должна объяснять значение каждой строки, но я на самом деле не могу понять, что означает эта документация. И, видимо, я не одинок :)
Я бы посоветовал вам добавить один или несколько из следующих шаблонов и проверять определенные файлы / URL-адреса, пока вы не будете удовлетворены. Пример:
С этим вы говорите Squid считать все иконки / картинки кэшируемыми в течение как минимум 1 часа, максимум до половины дня. Ваш браузер может отправлять HTTP-запросы с определенными заголовками кэша, которые заставляют Squid в
TCP_MISS
любом случае ответить . Чтобы заставить кэшированные ответы, даже нарушая ожидания клиентов, вы можете сделать это:То же самое касается больших фильмов / аудио / ISO-файлов:
Если ничего не помогает, используйте могучий молот :), но я не рекомендую это:
с помощью которого вы говорите Squid, что он может кешировать все как минимум на 1 час. Однако это почти наверняка сломает динамические приложения. Используйте его, если сервер, который вы пытаетесь кэшировать, в основном состоит из статического содержимого.
Кроме того, не забывайте
maximum_object_size
. По умолчанию это 20 Мб . Если объекты, которые вы пытаетесь кэшировать, больше этого, Squid не будет их кэшировать. Я увеличил его в 10 раз, до 200 МБ. YMMV.Кстати, ваша
cache_peer
строка неверна, потому что она указывает на Apache. На языкеcache_peer
Squid - это еще один экземпляр Squid, находящийся выше в иерархии кеша, который в прежние времена обычно был сервером кеша ISP. Просто удали эту строку.И удачи :)
источник