Cumi bukan caching

8

Saya mencoba mengkonfigurasi Squid sebagai server caching. Saya memiliki LAN di mana server web (apache) di 192.168.122.11squid berada di 192.168.122.21dan klien saya ada di 192.168.122.22. Masalahnya adalah, ketika saya melihat log akses Squid, yang saya lihat hanyalah TCP_MISSpesan. Sepertinya Squid sama sekali bukan caching. Saya memeriksa bahwa direktori cache memiliki semua izin yang tepat. Apa lagi yang salah di sini? Ini konfigurasi squid saya:

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

Di semua mesin, cona-proxyarahkan ke 192.168.122.21(menambahkan bahwa dalam /etc/hosts)

Output dari 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
Abhishek Chanda
sumber
Ketika Anda menguji pastikan bahwa halaman pengujian memungkinkan caching. Misalnya halaman SSL tidak di-cache.
Mircea Vutcovici
Untuk saat ini saya hanya memiliki halaman default Apache "It works". Itu harus di-cache dengan baik, saya pikir.
Abhishek Chanda
Saya harus menambahkan konfigurasi squid Anda.
Christopher Perrin
Ditambahkan squid config
Abhishek Chanda
1
Dalam permintaan sampel yang Anda poskan, konten tidak dapat di- cache.
symcbean

Jawaban:

3

Di konfigurasi Anda, Anda telah melewatkan baris ini:

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

EDIT1:

Server web Anda bukan cache_peer Anda. Harap hapus baris ini dari file konfigurasi Anda. Squid memiliki interoperabilitas antara cache jenis protokol lain (ICP), yang tidak diketahui oleh apache.

Jan Marek
sumber
jaringan internal saya adalah 192.168.0.0/255.255.255.0. Ketika saya menambahkan dua baris ini, browser saya mengatakanproxy server is refusing connections
Abhishek Chanda
1
Jika Anda menggunakan alamat 192.168.122.11 dll., Jaringan Anda bukan 192.168.0.0/255.255.255.0, tetapi 192.168.122.0/255.255.255.0.
Jan Marek
Atau mungkin 192.168.0.0/255.255.0.0
Christopher Perrin
1
Itu saran pertama saya, lihat jawaban saya ... :-)
Jan Marek
Tentu! Maaf! Sudah sangat terlambat / awal ketika saya mempostingnya!
Christopher Perrin
7

Dalam pengalaman saya, 3 alasan paling umum mengapa Squid menolak untuk men-cache konten adalah:

  • Izin direktori cache, dan Anda telah mengatasinya. Baik :)
  • http_access, tetapi ini bukan kasus Anda, karena Anda melihat TCP_MISSbaris di access.log Anda
  • refresh_pattern arahan

refresh_pattern arahan (s) mengontrol bagaimana Squid menganggap objek segar atau basi, terutama dalam kaitannya dengan cara browser Anda membuat permintaan, dan kontrol cache header HTTP mana yang dipertukarkan.

The refresh_patterngaris yang Anda miliki dalam konfigurasi Anda adalah garis bawaan Squid. Namun, saya baru saja menginstal Squid di Ubuntu 2 minggu yang lalu, dan dengan default-default itu, cache hampir tidak ada.

Dokumentasi Squid tentang refresh_pattern harus menjelaskan arti setiap baris, tapi saya sebenarnya tidak mengerti apa arti dokumentasi itu. Dan ternyata aku tidak sendiri :)

Saya menyarankan Anda untuk menambahkan satu atau lebih pola berikut dan menguji file / URL tertentu sampai Anda puas. Contoh:

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

Dengan ini, Anda memberi tahu Squid untuk mempertimbangkan semua ikon / gambar yang dapat di-cache selama minimal 1 jam hingga maksimal setengah hari. Browser Anda mungkin mengirim permintaan HTTP dengan header cache tertentu yang menyebabkan Squid membalasnya dengan cara apa pun TCP_MISS. Untuk memaksa balasan dalam cache, bahkan melanggar harapan klien, Anda dapat melakukan ini:

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

Hal yang sama berlaku untuk file film / audio / iso yang lebih besar:

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

Jika ada yang gagal, gunakan palu perkasa :) tapi saya tidak merekomendasikan ini:

refresh_pattern . 3600    80%     14400

dengan yang Anda katakan pada Squid bahwa ia dapat menyimpan semuanya setidaknya selama 1 jam. Namun, ini hampir pasti akan merusak aplikasi yang dinamis. Gunakan jika server yang Anda coba cache sebagian besar terdiri dari konten statis.

Juga, jangan lupa maximum_object_size. Secara default, ini 20 MB . Jika objek yang Anda coba cache lebih besar dari itu, Squid tidak akan menyimpannya. Saya menaikkannya 10x, menjadi 200MB. YMMV.

maximum_object_size 204800 KB

BTW, cache_peerbaris Anda salah, karena menunjuk ke Apache. A cache_peerdalam bicara squid adalah contoh squid lain yang lebih tinggi dalam hierarki cache, yang biasanya digunakan sebagai server cache ISP di masa lalu. Hapus saja garis itu.

Dan semoga beruntung :)

Cosimo
sumber