Кальмар не кешируется


8

Я пытаюсь настроить Squid в качестве кеширующего сервера. У меня есть локальная сеть, где веб-сервер (apache) находится на 192.168.122.11Squid, 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

При тестировании убедитесь, что на тестовых страницах разрешено кэширование. Например, страницы SSL не кэшируются.
Мирча Вутцовичи

На данный момент у меня есть страница Apache по умолчанию «Это работает». Это должно быть хорошо кэшировано, я думаю.
Абхишек Чанда

Я должен добавить ваш конфиг Squid.
Кристофер Перрен

Добавлен конфиг кальмара
Абхишек Чанда

1
В размещенном вами примере запроса содержимое не кэшируется.
Symcbean

Ответы:


3

В вашем конфиге вы пропустили следующие строки:

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

EDIT1:

Ваш веб-сервер не ваш cache_peer. Пожалуйста, удалите эту строку из вашего конфигурационного файла. У Squid есть возможность взаимодействия между кешами другого типа протокола (ICP), который apache не знает.


моя внутренняя сеть есть 192.168.0.0/255.255.255.0. Когда я добавил эти две строки, мой браузер говоритproxy server is refusing connections
Абхишек Чанда

1
Если вы используете адреса 192.168.122.11 и т. Д., Ваша сеть не 192.168.0.0/255.255.255.0, а 192.168.122.0/255.255.255.0.
Ян Марек

Или, вероятно, 192.168.0.0/255.255.0.0
Кристофер Перрен

1
Это был мой первый совет, посмотрите мой ответ ... :-)
Ян Марек

Конечно! Сожалею! Было очень поздно / рано, когда я отправил это!
Кристофер Перрен

7

По моему опыту, 3 наиболее распространенные причины, по которым Squid отказывается кэшировать контент:

  • Кэшируйте права доступа к каталогу, и вы позаботились об этом. Хорошо :)
  • http_access, но это не ваш случай, потому что вы видите TCP_MISSстроки в вашем access.log
  • refresh_pattern директивы

refresh_pattern директива (ы) контролирует, как Squid считает объекты новыми или устаревшими, особенно в отношении того, как ваш браузер делает запросы, и какой обмен кэшем контролирует HTTP-заголовки.

Эти refresh_patternстроки , которые вы имеете в конфигурации по умолчанию являются строками кальмара. Тем не менее, я только что установил Squid на Ubuntu 2 недели назад, и с этими настройками по умолчанию он почти ничего не кэширует.

Документация Squid о refresh_pattern должна объяснять значение каждой строки, но я на самом деле не могу понять, что означает эта документация. И, видимо, я не одинок :)

Я бы посоветовал вам добавить один или несколько из следующих шаблонов и проверять определенные файлы / URL-адреса, пока вы не будете удовлетворены. Пример:

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

С этим вы говорите Squid считать все иконки / картинки кэшируемыми в течение как минимум 1 часа, максимум до половины дня. Ваш браузер может отправлять HTTP-запросы с определенными заголовками кэша, которые заставляют Squid в TCP_MISSлюбом случае ответить . Чтобы заставить кэшированные ответы, даже нарушая ожидания клиентов, вы можете сделать это:

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

То же самое касается больших фильмов / аудио / ISO-файлов:

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

Если ничего не помогает, используйте могучий молот :), но я не рекомендую это:

refresh_pattern . 3600    80%     14400

с помощью которого вы говорите Squid, что он может кешировать все как минимум на 1 час. Однако это почти наверняка сломает динамические приложения. Используйте его, если сервер, который вы пытаетесь кэшировать, в основном состоит из статического содержимого.

Кроме того, не забывайте maximum_object_size. По умолчанию это 20 Мб . Если объекты, которые вы пытаетесь кэшировать, больше этого, Squid не будет их кэшировать. Я увеличил его в 10 раз, до 200 МБ. YMMV.

maximum_object_size 204800 KB

Кстати, ваша cache_peerстрока неверна, потому что она указывает на Apache. На языке cache_peerSquid - это еще один экземпляр Squid, находящийся выше в иерархии кеша, который в прежние времена обычно был сервером кеша ISP. Просто удали эту строку.

И удачи :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.