스마트캐싱 (squid 3.2.0.3) 설정

리눅스/APACHE|2015. 1. 16. 16:47
반응형

본 매뉴얼은 웹서버포트 8080, squid 포트 80을 기준으로 작성하였습니다.

웹서버에 사용하는 도메인이 많은 가운데 한개의 도메인만 squid 적용하고 싶을 경우

웹서버를 80으로, squid 포트를 8080 (또는 3128)으로 변경하여 적용 하시기 바랍니다.

 

 

1. 다운로드

    http://squid-cache.org

 

위 URL 에서 최신 버전을 다운로드 받습니다. (2010.12.23 현재 버전 : 3.2.0.3)

squid 3.2.0.3 바로 받기 : ftp://mirror.aarnet.edu.au/pub/squid/archive/3.2/squid-3.2.0.3.tar.gz

새로운 버전을 다운로드 받아서 ftp로 업로드 시키거나 위에 기재된 버전을 wget을 이용하여 아래와같이 다운받습니다.

 

cd /usr/local/src

wget ftp://mirror.aarnet.edu.au/pub/squid/archive/3.2/squid-3.2.0.3.tar.gz

 

 

2. 설치

tar xvzf squid-3.2.0.3.tar.gz

cd squid-3.2.0.3

./configure --prefix=/usr/local/squid

make

make install

 

 

3. 설정 

사용자, 그룹 생성 및 소유자 변경

groupadd -g 3128 squid
adduser -u 3128 -g squid -d /usr/local/squid/var squid    // 홈 디렉토리가 이미 있어서 파일을 복사하지 않는다고 나옵니다.

passwd squid    // squid 계정의 패스워드를 입력합니다.

chown squid.squid -R /usr/local/squid

 

squid 설정 파일을 아래 내용으로 대체하고 도메인 및 포트는 적절하게 수정합니다.

vi /usr/local/squid/etc/squid.conf

 

hierarchy_stoplist cgi-bin ?
acl apache rep_header Server ^Apache
 

# 홈페이지 소스 (또는 특정 단어)는 캐시서버에 저장하지 않음

acl QUERY urlpath_regex cgi-bin ? php php3 htm html jsp js css asp aspx

cache deny QUERY    (이부분 포함되는지 안되는지 확인 필요)

 

# 디스크에 저장할 객체를 대체하는 방식

cache_swap_low 90

cache_swap_high 95

 

memory_replacement_policy lru
emulate_httpd_log on
log_ip_on_direct on
log_mime_hdrs off
log_fqdn off
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
negative_ttl 60 seconds
connect_timeout 60 seconds
read_timeout 1 minutes
request_timeout 1 minutes
client_lifetime 1 day
half_closed_clients off
pconn_timeout 60 seconds
shutdown_lifetime 60 seconds
acl BLOCK_URI urlpath_regex -i ../ ... .. .ida .IDA .cnf .dll passwd boot .exe cmd  default.ida XXXXXX /bin/sh  wget
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 8080    # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT
http_access allow all
http_access allow manager localhost
http_access deny BLOCK_URI
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
 

# ★사용자 계정과 설정한 패스워드를 입력합니다.

cache_mgr squid
cachemgr_passwd sysdocu!@#$ all    # 여기서 sysdocu!@#$ 가 패스워드입니다.
 

# squid 데몬을 실행할 사용자
cache_effective_user squid

cache_effective_group squid

 

# 사용할 도메인 등록

visible_hostname img.sysdocu.com
 

# 캐시에 저장될 파일 크기
maximum_object_size 15 MB

minimum_object_size 10 KB


cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
pid_filename /var/run/squid.pid

 

# 캐시 메모리로 잡을 메인 메모리 (1GB 식으로 해도 됌)
cache_mem 2048 MB

 

logfile_rotate 1
memory_pools on
memory_pools_limit 0
client_db off
always_direct allow all
error_directory /usr/local/squid/share/errors/ko
uri_whitespace deny
high_response_time_warning 1500

 

# 서버IP 및 웹서버 포트(8080)

cache_peer 115.68.39.11 parent 8080 0

 

# squid 가 사용할 포트(80) 및 웹서버 포트(8080)
http_port 80 accel defaultsite=img.sysdocu.com:8080

 

 

스왑디렉토리를 초기화 합니다. (추후 초기화 할때는 squid 를 중지 후 초기화 하세요.)

/usr/local/squid/sbin/squid -z

squid 를 구동합니다.

/usr/local/squid/sbin/squid

[참고]

종료방법 : pkill -9 squid

 

아래와 같이 squid 가 사용하는 포트를 확인할 수 있습니다.

netstat -nltp | grep squid

tcp        0      0 0.0.0.0:80                0.0.0.0:*                   LISTEN      1943/(squid-1)

 

※ 해당 포트번호(80) 를 iptables 에 등록하여 접근 허용하도록 합니다.

    웹서버도 허용이 되어있나 다시 확인합니다.

 

 

4. 확인

웹브라우저로 이미지 파일을 열어봅니다.

 

예) http://img.sysdocu.com/images/love.jpg

 

이미지가 뜬것을 확인했습니다.

그럼 서버내 이미지 파일 love.jpg 파일을 삭제(또는 파일명 변경)하고

위 URL 로 다시 접속해 봅니다.

 

이미지가 뜨면 성공입니다!

파일이 해당 위치에 없는데도 나타나는것은 서버 HDD에서 이미지를 읽지않고

메모리에서 읽어오기 때문입니다. 수고하셨습니다. ^^

반응형

댓글()