오징어 캐싱


8

Squid를 캐싱 서버로 구성하려고합니다. 웹 서버 (apache)가 192.168.122.11오징어에 192.168.122.21있고 클라이언트가에 있는 LAN 이 있습니다 192.168.122.22. 문제는 Squid의 액세스 로그를 볼 때 TCP_MISS메시지 만 표시 한다는 것입니다. 오징어가 전혀 캐싱하지 않는 것 같습니다. 캐시 디렉토리에 모든 적절한 권한이 있는지 확인했습니다. 여기서 또 무엇이 잘못 될 수 있습니까? 내 오징어 설정은 다음과 같습니다.

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 페이지는 캐시되지 않습니다.
Mircea Vutcovici 2016 년

지금은 Apache의 기본 "It works"페이지가 있습니다. 잘 캐시되어야한다고 생각합니다.
Abhishek Chanda 2018 년

오징어 설정을 추가해야합니다.
Christopher Perrin 2016 년

추가 된 오징어 설정
Abhishek 찬다

1
게시 한 샘플 요청에서 컨텐츠를 캐시 할 수 없습니다 .
symcbean

답변:


3

설정에서 다음 줄을 놓쳤습니다.

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

편집 1 :

웹 서버가 cache_peer가 아닙니다. 구성 파일에서이 줄을 제거하십시오. Squid는 캐시 사이의 상호 운용성을 위해 아는 바없는 다른 유형의 프로토콜 (ICP)을 가지고 있습니다.


내 내부 네트워크는 192.168.0.0/255.255.255.0입니다. 나는이 두 줄을 추가하는 경우, 브라우저는 말한다proxy server is refusing connections
Abhishek 찬다

1
주소 192.168.122.11 등을 사용하는 경우 네트워크는 192.168.0.0/255.255.255.0이 아니라 192.168.122.0/255.255.255.0입니다.
Jan Marek

또는 아마도 192.168.0.0/255.255.0.0
Christopher Perrin

1
그것은 나의 첫번째 충고였습니다, 나의 대답을보십시오 ... :-)
Jan Marek

확실한! 죄송합니다! 게시했을 때 매우 늦었습니다.
Christopher Perrin

7

내 경험상 Squid가 콘텐츠 캐시를 거부하는 가장 일반적인 3 가지 이유는 다음과 같습니다.

  • 캐시 디렉토리 권한을 처리했습니다. 좋은 :)
  • http_access하지만 access.log에 줄이 표시되어 있기 때문에 귀하의 경우 는 아닙니다.TCP_MISS
  • refresh_pattern 지시어

refresh_pattern 지시문 (들)은 특히 브라우저가 요청하는 방식 및 교환되는 캐시 제어 HTTP 헤더와 관련하여 Squid가 객체를 신선하거나 오래된 것으로 간주하는 방법을 제어합니다.

구성에있는 refresh_pattern줄은 Squid의 기본 줄입니다. 그러나 2 주 전에 우분투에 Squid를 설치했으며 그 기본값으로 거의 아무것도 캐시하지 않습니다.

refresh_pattern에 대한 Squid의 문서 는 각 행의 의미를 설명해야하지만 실제로는 해당 문서의 의미를 이해할 수 없습니다. 그리고 분명히 나는 ​​혼자가 아닙니다 :)

만족할 때까지 다음 패턴 중 하나 이상을 추가하고 특정 파일 / URL을 테스트하는 것이 좋습니다. 예:

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

이것으로, Squid에게 모든 아이콘 / 사진을 적어도 1 시간에서 최대 반나절 동안 캐시 할 수있는 것으로 간주하라고 말하고 있습니다. 브라우저는 특정 캐시 헤더와 함께 HTTP 요청을 보내 TCP_MISS어쨌든 Squid가 응답하게 할 수 있습니다 . 캐시 된 응답 을 강제로 클라이언트의 기대치에 미치지 못하게 하려면 다음과 같이하십시오.

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. 기본적으로 20Mb 입니다. 캐싱하려는 객체가 그보다 큰 경우 Squid는 캐싱하지 않습니다. 나는 그것을 200Mb로 10 배 올렸다. YMMV.

maximum_object_size 204800 KB

BTW, 귀하의 cache_peer회선은 Apache를 가리 키기 때문에 올바르지 않습니다. cache_peer오징어 말하는에서 일반적으로 옛날의 ISP 캐시 서버로 사용하는 것으로, 다른 오징어 예를 더 높은 최대 캐시 계층 구조입니다. 그 줄을 제거하십시오.

그리고 행운을 빌어 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.