squid는 프록시서버로 이문서에서는 기본 웹서버의 보조역할에대해 기술(?)하고
있습니다.
작성자:현 창호 <climbk2 [at] hitel [dot] net>
URL:http://www.emperorofjapan.com
#사용목적
squid을 accelerator mode로 사용하는 이유는 웹서버의 부하을 덜어주기
위함이다.자주 접근되는 웹서버의
내용을 squid의 캐쉬에 저장시켜 클라이
언트로부터 요청이 있을시 웹서버에 요청하지 않고 캐쉬에서 바로 보내 줌으로
써 서버의
이용률을 높일 수 있게 되는것이다.클라이언트로 부터 오는 요청중
캐쉬에 저장될 수 없는 cgi같은 내용만 웹서버로 직접 전달시켜줄 뿐
나머지
캐쉬로 저장해두 무방한 html이나 gif,jpg같은 내용은 캐쉬에서 바로 클라이
언트로 응답을 해줌으로서 속도을 증가시켜
주는 역할을 한다.
squid는 클라이언트와 웹서버의 중간자 역할을 수행한다고 생각하면 이해하기
가 수월할 것이다.클라이언트의 요청을
squid가 받아서 squid의 cache에 보관되
어 있는 내용은 웹서버에 요청하지 않고 squid 자신이 바로 처리함으로써
웹서버
의 부하을 줄이면서 클라이언트의 요청에 좀 더 빨리 응답할 수 있게 되는 것이다.
또한 특정 주소로 부터의 접속을 차단하거나,특정 주소로 향하는 접속만 허용할
수 있으며 특정 포트로부터 오는 접속을 차단하는 역할 을
한다.
# squid의 설치
squid는 리눅스 배포판 시디안에 rpm포맷으로 존재함으로 간단히 설치할 수 있다.
rpm -ivh squid-2.3.STABLE4-10.rpm
설치가 완료되면 자동적으로 /etc/squid,/var/spool/squid,/var/log/squid가
생성된다./etc/squid
디렉토리가 squid설정 디렉토리임을 잊지 말기바란다.
# squid.conf 설정
먼저 설정하기에 앞서 아파치 웹서버가 이용하는 80포트을 81포트로 옮겨준다.
httpd.conf
웹서버 설정 파일서 "Port 80" 을 "Port 81"로 고쳐준다.
앞에서 언급했듯이 squid가 웹서버와 클라이언크간의 중간자 역할을 한다고 했
음으로 클라이언트의 접속요청을 squid가 포트
80번으로 변함없이 받아서 단지
이 요청에서 squid가 자신의 캐쉬에 보관된 내용을 클라이언트가 요청했면 바
로 전달해주고,자신의
캐쉬에 보관된 내용이 아닌 내용은 웹서버에 요청해서
클라이언트에 전해준다.
이제 squid웹 프록시 서버의 설정파일인 squid.conf 파일을 수정해서 squid 가
엑셀레이터 모드로 작동시키는 과정을
설명한다.
/etc/squid/squid.conf.default 파일을 /etc/squid/squid.conf로 복사해서
이을
수정
해서 사용한다.
다음 부분을 수정해주면 된다.
*squid.conf 설명
시작*
---------------------------------------------------------------
#squid.conf
#
squid가 사용하는 포트(http_accelerate mode)
http_port 80
# squid을 accelerate mode로 사용함으로 icp사용안함,'0' means 'not using'.
icp_port 0
# 의미없음
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
# squid가 사용하는 최소 메모리,실제 메모리의 1/3크기로 해줌
#내 경우 512M을 사용
cache_mem 160 MB
# cache_dir , type, directory, Mbyte ,첫디렉토리숫자, 그하위디렉토리숫자
#첫디렉토리 숫자란
/var/spool/squid/ 디렉에 생성될 수 있는 디렉토리 수을
말한다.
#그 하위 디렉토리 숫자란
/var/spool/squid/example/ 디렉에 생성될 수 있는
디렉토리 수을 말한다.
#아래의 의미는 ,directory =
/var/spool/squid,Mbyte = 100M,첫디렉토리 =
16개,하위디렉토리 = 256 개
cache_dir ufs
/var/spool/squid 100 16 256
# cache replacement policy,based on frequency
replacement_policy GDSF
# Access Control List(acl)
# acl aclname acltype string <<-- 순서 필히
지켜주어야한다.
# aclname :자기가 편한대로 지어주면 된다.(가령 hateaddress,blockshit...)
#
acltype :src dst srcdomain dstdomain url_pattern urlpath_pattern time
port
proto method browser user :case sensitive
#즉 대소문자을 주의해야한다.
# i.e)
acl localnet src 192.168.1.0/255.255.255.0
# acl myself myip
211.211.211.211/255.255.255.255
# acl block srcdomain .sarang.net
<-srang.net을 주소로하는 접속시도
# acl blockport port 1-1023
# acl Safe_ports
port 23
# 0.0.0.0/0.0.0.0 모든 곳으로 부터 시도되는 접속
acl all src 0.0.0.0/0.0.0.0
# allow or deny :위 부분에 작성한 acl 중 aclname을 이용해서 접속 차단,허용을
작성한다.
#
http_access deny blockport <-blockport란 가진 이름 가진 acl 차단
# http_access deny
!Safe_ports <-Safe_ports가 아닌것은 차단
#(i.e) http_access deny block <--위 부분
acl list의 예문중 sarang.net을
주소로 하는 접속시도을 차단한다.
http_access allow all
# squid 관리자
cache_mgr emperorofjapan11@emperorofjapan.com
# cache가 squid란 uid/gid로 작동,보안을 위해
cache_effective_user
squid
cache_effective_group squid
# squid가 작동하는 호스트
httpd_accel_host 211.20x.x1.1x6 <--squid가 작동되는 호스트
ip나 호스트 이름을
적어준다.
# 아파치가 작동하고 있는 포트
httpd_accel_port 81 <--아파치가 돌아가는 포트
# icp을 사용하지 않음으로 당연히 'off'
log_icp_queries off
# cachemgr 을 위한 password,아래 부분에 설명이 있다.
# cachemgr_passwd password
all
cachemgr_passwd password all
# 로그 파일의 신속한 작성을 위해 'on'
buffered_logs on
-----------------
*squid 설명 완료*
#기타 사항
# squid 기본 설정 디렉토리 /etc/squid
# squid cache 디렉토리
/var/spool/squid
# squid log 디렉토리 /var/log/squid
# squid error 설정
/etc/squid 디렉토리 내에서
ln -s /usr/lib/squid/errors/Korean errors 하면 에머메시지가 한글로
나옴
# squid accelerator mode는 html,gif등 cache할 수 있는 contents을 squid
#
cache내에 저장,하지만 cgi등과같이 cache할 수 없는 contents는 apache서버에
# 직접 요청하는 역활을 한다.
#
httpd_accel_host virtual <-virtual web hosting
# httpd_accel_with_proxy on
<-accelerator mode와 proxy모드 함께 사용시
# howto cache manager (cachemgr.cgi) :캐쉬 매너져 사용하기
cp
/usr/lib/squid/cachemgr.cgi /usr/local/apache/cgi-bin/
http://hostname/cgi-bin/cachemgr.cgi
<-웨브라우저로 접속해서 아래 부분을
작성하면 접속완료
Cache Host: localhost
Cache port:
80(accelerator mode),8080(proxy mode)
Manager name:squid
Password :
password(squid.conf에 적어준 패스워드)
접속이 완료되면 캐쉬 매너져을 사용해서 수정을 해줄수 있다.
-------------------------------------
#내가 사용하는 간략한 squid.conf 설정파일 예제
#
필요한 부분만 수정해서 /etc/squid/squid.conf 로 복사해서
# 사용해도 된다.
http_port 80
icp_port 0
acl QUERY urlpath_regex cgi-bin ?
no_cache
deny QUERY
cache_mem 170 MB
cache_dir ufs /var/spool/squid 100 16
256
replacement_policy GDSF
acl all src 0.0.0.0/0.0.0.0
http_access
allow all
cache_mgr <climbk2 [at] hitel [dot] net>
cache_effective_user
squid
cache_effective_group squid
httpd_accel_host
192.168.1.1
httpd_accel_port 81
log_icp_queries off
cachemgr_passwd
password all
buffered_logs on
-------------------------------------------------------
#Squid 실행/정지
/etc/init.d/squid start/stop/restart <--자신의 시스템에 따르겠지만
거의
비슷하다.
.
'Server' 카테고리의 다른 글
khttpd웹서버 테스트중입니다. (2) | 2001.12.16 |
---|---|
mysqladmin 총정리 (0) | 2001.12.16 |
tux와 아파치를 연동한 웹서버 구축 (1) | 2001.12.11 |
proftpd에서 FXP사용 (0) | 2001.12.08 |
khttpd (커널에 포함된 웹서버 - 수정) (2) | 2001.12.01 |