Mực không lưu trữ


8

Tôi đang cố gắng cấu hình Squid như một máy chủ lưu trữ. Tôi có một mạng LAN nơi máy chủ web (apache) đang ở 192.168.122.11mực 192.168.122.21và khách hàng của tôi đang ở 192.168.122.22. Vấn đề là, khi tôi nhìn vào nhật ký truy cập của Squid, tất cả những gì tôi thấy là TCP_MISStin nhắn. Có vẻ như Squid hoàn toàn không lưu trữ. Tôi đã kiểm tra rằng thư mục bộ đệm có tất cả các quyền thích hợp. Điều gì khác có thể đi sai ở đây? Đây là cấu hình mực của tôi:

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

Trong tất cả các máy, cona-proxytrỏ đến 192.168.122.21(thêm vào đó /etc/hosts)

Đầu ra của 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

Khi bạn kiểm tra, đảm bảo rằng các trang kiểm tra đang cho phép lưu vào bộ đệm. Ví dụ: các trang SSL không được lưu trữ.
Mircea Vutcovici

Bây giờ tôi chỉ có trang "Nó hoạt động" mặc định của Apache. Điều đó nên được lưu trữ tốt, tôi nghĩ.
Abhishek Chanda

Tôi nên thêm cấu hình mực của bạn.
Christopher Perrin

Đã thêm cấu hình mực
Abhishek Chanda

1
Trong yêu cầu mẫu bạn đã đăng, nội dung không được lưu trong bộ nhớ cache.
symcbean

Câu trả lời:


3

Trong cấu hình của bạn, bạn đã bỏ lỡ dòng này:

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

EDIT1:

Máy chủ web của bạn không phải là cache_peer của bạn. Xin vui lòng, loại bỏ dòng này từ tập tin cấu hình của bạn. Mực ống có khả năng tương tác giữa các loại giao thức khác (ICP), mà apache không biết.


mạng nội bộ của tôi là 192.168.0.0/255.255.255.0. Khi tôi thêm hai dòng này, trình duyệt của tôi nóiproxy server is refusing connections
Abhishek Chanda

1
Nếu bạn đang sử dụng địa chỉ 192.168.122.11, v.v., mạng của bạn không phải là 192.168.0.0/255.255.255.0, mà là 192.168.122.0/255.255.255.0.
Jan Marek

Hoặc có lẽ 192.168.0.0/255.255.0.0
Christopher Perrin

1
Đó là lời khuyên đầu tiên của tôi, hãy xem câu trả lời của tôi ... :-)
Jan Marek

Chắc chắn rồi! Lấy làm tiếc! Nó đã rất muộn / sớm khi tôi đăng nó!
Christopher Perrin

7

Theo kinh nghiệm của tôi, 3 lý do phổ biến nhất khiến Squid từ chối lưu trữ nội dung là:

  • Quyền truy cập thư mục bộ đệm, và bạn đã chăm sóc điều đó. Tốt :)
  • http_access, nhưng đó không phải là trường hợp của bạn, bởi vì bạn đang nhìn thấy TCP_MISScác dòng trong access.log của bạn
  • refresh_pattern chỉ thị

refresh_pattern (các) chỉ thị kiểm soát cách Squid xem xét các đối tượng mới hoặc cũ, đặc biệt liên quan đến cách trình duyệt của bạn thực hiện các yêu cầu và các tiêu đề HTTP kiểm soát bộ đệm được trao đổi.

Các refresh_patterndòng bạn có trong cấu hình của bạn là các dòng mặc định của Squid. Tuy nhiên, tôi mới cài đặt Squid trên Ubuntu 2 tuần trước và với những mặc định đó, nó lưu trữ gần như không có gì.

Tài liệu của Squid về refresh_potype sẽ giải thích ý nghĩa của từng dòng, nhưng tôi thực sự không thể hiểu tài liệu đó có nghĩa gì. Và rõ ràng tôi không cô đơn :)

Tôi sẽ đề nghị bạn thêm một hoặc nhiều mẫu sau và kiểm tra các tệp / URL cụ thể cho đến khi bạn hài lòng. Thí dụ:

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

Với cái này, bạn đang nói với Squid xem xét tất cả các biểu tượng / hình ảnh có thể lưu trong bộ nhớ cache trong ít nhất 1 giờ đến tối đa nửa ngày. Trình duyệt của bạn có thể gửi các yêu cầu HTTP với các tiêu đề bộ đệm cụ thể khiến Squid trả lời bằng TCP_MISSmọi cách. Để buộc trả lời được lưu trong bộ nhớ cache, thậm chí phá vỡ kỳ vọng của khách hàng, bạn có thể làm điều này:

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

Tương tự với các tập tin phim / âm thanh / iso lớn hơn:

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

Nếu bất cứ điều gì khác thất bại, hãy sử dụng một cây búa mạnh mẽ :) nhưng tôi không khuyến nghị điều này:

refresh_pattern . 3600    80%     14400

bạn đang nói với Squid rằng nó có thể lưu trữ mọi thứ trong ít nhất 1 giờ. Tuy nhiên, điều này gần như chắc chắn sẽ phá vỡ các ứng dụng động. Sử dụng nó nếu máy chủ bạn đang cố gắng lưu trữ phần lớn bao gồm nội dung tĩnh.

Ngoài ra, đừng quên maximum_object_size. Theo mặc định, đó là 20Mb . Nếu các đối tượng bạn đang cố gắng lưu trữ bộ nhớ cache lớn hơn thế, Squid sẽ không lưu trữ chúng. Tôi đã tăng nó lên 10 lần, lên 200Mb. YMMV.

maximum_object_size 204800 KB

BTW, cache_peerdòng của bạn không chính xác, vì nó trỏ đến Apache. Một cache_peermực nói là một cá thể mực khác cao hơn trong hệ thống phân cấp bộ đệm, thường được sử dụng là một máy chủ bộ đệm ISP trong những ngày xưa. Chỉ cần loại bỏ dòng đó.

Và chúc may mắn :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.