Skip to content

조회 수 18254 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

하이텔 리눅스 동회회에서 퍼온글입니다.
이제까지 squid는 단순히 내부 네트워크의 웹서핑 속도
향상에만 쓰는 건줄 알았는데 잘만 쓰면 자신의 웹서버의
성능및 속도 향상에도 잘 쓰일수 있을꺼같습니다..
..
이런게 역프록시 (Reverse Proxy )라는 게 맞는지 모르겠지만.
..
하여튼.. 간단히 설명하면..
외부 사용자가 자신의 웹서버에 접속할때는 아파치 등의
웹서버 80 포트로 바로 접속 되는게 아니라..
squid 의 80 번포트로 접속 됩니다.. 보통 squid 는
3128 번포트인가 ? 사용하는 웹 가속서버로 쓸려면 반드시
80 번 포트로 해야합니다..
(더 자세히 말하면 /etc/service 에 등록된 포트죠)..
..
그러면 squid 는 캐싱가능한 웹정보는 자신이 담당하고
cgi 등 계산이 필요하거나 케싱안되는건 실제 웹서버에
요청을 보냅니다..
당연히 아파치는 80 번 포트가 아니라 다른 포트.. 예를 들면
81 번 포트 등으로 실행이 되어야합니다.. squid 설정파일에서
웹서버 IP 와 포트를 지정할수 있습니다..
..
실제로 이걸써서 서비스할 처지가 못해서 충분한 테스트는
못해봤는데.. 오래 써보신분들 경험담 부탁하고요..
..
이런 거 말고.. 웹가속할수 있는 방법 있으면 부탁...
..
아래는 하이텔에서 현창호 님이 올린 글입니다..
========================================================

작성자:현 창호(climbk2@hitel.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@hitel.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 <--자신의 시스템에 따르겠지만 거의
비슷하다.

---------------------------------------------
다른 곳에 배포할 시 작성자을 지우지 말고 배포해주세요.


List of Articles
번호 제목 글쓴이 날짜 조회 수
48 사용자 인증 ADMINPLAY 2009.11.26 14017
» squid 로 웹서버 가속하기..---== 강추 ==--- ADMINPLAY 2009.11.26 18254
46 아파치 데몬이 안 뜰경우 ADMINPLAY 2009.11.26 14874
45 apache2 worker 방식 client 수치 설정법 ADMINPLAY 2009.11.26 16069
44 rewrite 모듈을 이욜한 서브도메인으로 홈페이지 운영하기 ADMINPLAY 2009.11.26 14217
43 apache log에 그림이미지 파일 로그 안남기기 ADMINPLAY 2009.11.26 14666
42 SSL 인증서 발급 후 SSL mode 시작시 두 개의 패스워드 입... ADMINPLAY 2009.10.15 14176
41 브라우저 접속 제한하기 ADMINPLAY 2009.09.30 14691
40 아파치 컴파일 에러(apr-util) configure: error: cannet ... ADMINPLAY 2009.08.08 19574
39 APM 기본설치후 아파치 실행에러 httpd: Could not determ... ADMINPLAY 2009.08.08 21875
38 Apache Make시 /usr/lib/libexpat.so: could not read sym... ADMINPLAY 2009.08.07 17943
37 make[2]: *** [htpasswd] 오류 1 , make[1]: *** [all-rec... ADMINPLAY 2009.08.07 27096
36 Unclean shutdown of previous Apache run? ADMINPLAY 2009.08.05 21795
35 apache 에서 euc-kr홈페이지를 포팅할때 화면이안나올경우 ADMINPLAY 2009.07.18 14217
34 매일 자정에 트래픽 초기화 하기 ADMINPLAY 2009.07.18 15668
33 Apache 웹서버 MaxClient 최대값 조정을 위한 C & CPP 플... ADMINPLAY 2009.06.21 13815
32 Tomcat 4 과 Apache 2 연동 ADMINPLAY 2009.06.06 14616
31 [자료] 웹사이트 성능개선 위한 커널 튜닝 사례 ADMINPLAY 2009.05.10 13767
30 [LINUX] Apache 2.2 + mod jk 1.2 + Tomcat 5.x 연동 ADMINPLAY 2009.05.07 21037
29 Apache의 Indexes된 페이지에서 한글표시 file ADMINPLAY 2009.05.07 16290
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234