Linux下Squid3.0反向 Proxy的安裝與配置

來源:互聯網
上載者:User

 

1. Squid3.0的安裝是很簡單的:

./configure --prefix=/usr/local/squid
make
make install
chown -R nobody.nobody /usr/local/squid/var/
/usr/local/squid/sbin/squid -z

Squid3.0的配置也不複雜:

假設我們有兩台Apache伺服器需要反向 Proxy:www.avnads.cn(IP: x.x.x.x);www.britepic.org(IP: y.y.y.y)。

如果你的Apache和Squid再同一台伺服器上,那麼要注意連接埠問題,可以讓Apache使用非80連接埠,而Squid使用80連接埠,也可以讓 Apache和Squid都使用80連接埠,只是Apache使用的是迴環地址,而Squid使用的是外網地址,此時Apache的httpd.conf裡 設定的是Listen 127.0.0.1:80。

squid.conf檔案一共有四千多行,不過大部分都是注釋,配置反向 Proxy功能大致涉及以下幾項:

acl

在檔案裡找到TAG: acl的位置,在其後加上我們的設定:

acl sites dstdomain .avnads.cn
acl sites dstdomain .britepic.org

http_access

在檔案裡找到TAG: http_access的位置,其後有一行注釋:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

我們就把自訂的規則放在這行的下面:

http_access allow sites

http_access的位置是很重要的,在下面有如下設定:

# And finally deny all other access to this proxy
http_access deny all

它會拒絕所有剩下的訪問。

http_port

在檔案裡找到TAG: http_port的位置,在其後加上我們的設定:

http_port 80 defaultsite=預設網站 vhost

一般來說,vhost就足夠了,不過加上defaultsite還是有好處的,畢竟,有的HTTP1.0用戶端不發送Host頭,在這種情況下系統有一個預設值總比沒有強。

cache_peer

在檔案裡找到TAG: cache_peer的位置,在其後加上我們的設定:

cache_peer x.x.x.x parent 80 0 no-query originserver name=foo
cache_peer y.y.y.y parent 80 0 no-query originserver name=bar

cache_peer_domain

在檔案裡找到TAG: cache_peer_domain的位置,在其後加上我們的設定:

cache_peer_domain foo www.avnads.cn
cache_peer_domain bar www.britepic.org

cache_peer_access

在檔案裡找到TAG: cache_peer_access的位置,在其後加上我們的設定:

 

cache_peer_access foo allow sites
cache_peer_access bar allow sites

 

2. 設定檔

 

visible_hostname www.coojin.com<br />http_port 192.168.0.10:81 vhost vport<br />cache_peer 192.168.0.9 parent 8080 0 no-query originserver name=coojin<br />cache_peer_domain coojin 192.168.0.10<br />#acl all src 0.0.0.0/0.0.0.0<br />http_access allow all<br />refresh_pattern . 0 20% 4320<br />logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt<br />cache_log /usr/local/squid/var/logs/cache.log<br />access_log /usr/local/squid/var/logs/access.log<br />pid_filename /usr/local/squid/var/logs/squid.pid<br />cache_mem 512 MB<br />maximum_object_size_in_memory 512 KB<br />max_open_disk_fds 0<br />minimum_object_size 0 KB<br />maximum_object_size 4096 KB<br />maximum_object_size_in_memory 4096 KB<br />memory_replacement_policy lru<br />cache_dir ufs /usr/local/squid/cache 512 16 256 

 

3. 配置說明

 

#快取服務器的名字,可以任意<br />visible_hostname www.coojin.com<br />#伺服器連接埠<br />#設定squid為accel加速模式,vhost必須要加.否則將無法將主機頭轉寄至後端伺服器,訪問時就會出現無法找到主機頭的錯誤<br />http_port 81 accel vhost vport<br />#配置需要代理的apache伺服器<br />#定義不同的父節點,將節點設為no-query以及originserver說明這些節點是實際伺服器<br />cache_peer 127.0.0.1 parent 80 0 no-query originserver name=coojin<br />#設定不同網域名稱轉寄到不同的cache_peer上,如果沒有這項.不同網域名稱的網域名稱可能被分發到同一台伺服器上.<br />cache_peer_domain coojin localhost<br />#允許所有用戶端訪問<br />acl all src 0.0.0.0/0.0.0.0<br />http_access allow all<br />#記錄日誌<br />#日誌格式<br />logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt<br />#伺服器作業記錄<br />cache_log /usr/local/squid/var/logs/cache.log<br />#用戶端請求日誌<br />access_log /usr/local/squid/var/logs/access.log<br />#設定PID和記錄檔位置<br />pid_filename /usr/local/squid3/var/logs/squid.pid<br />#最大快取檔案大小,超過此值則不緩衝<br />maximum_object_size_in_memory 512 KB<br />max_open_disk_fds 0<br />minimum_object_size 0 KB<br />maximum_object_size 4096 KB<br />#共用記憶體大小(squid在提供服務的時候所使用的記憶體)<br />cache_mem 128 MB<br />#替換機制 (lru叫做 最近不常用的單元 unit一般就是常說的object 也就是當cache中的內容比如記憶體或硬碟達到上限時的 那麼就需要進行資料的換進和換出工作)<br />memory_replacement_policy lru<br />#儲存cache內容也就是object的物理存放點 #磁碟緩衝的類型和目錄,大小,一二級目錄的設定,這裡磁碟緩衝大小是10G<br />#ufs是一種檔案儲存體方式 因為os一般都是從記憶體擷取資料 那麼記憶體的東西必須最後寫的硬碟上~<br />#sync 同步的時候用的ufs 那麼squid也是一樣<br />#ufs一般是同時寫入記憶體和硬碟<br />#注意:size是按照M為單位的也就這個目錄中最大儲存容量的上限<br />#512M其中1層目錄16個 並且每個1層目錄下又有256個2層目錄[或者說子目錄]<br />cache_dir ufs /usr/local/squid/cache 512 16 256<br /> 

 

4. 啟動

 

 

#/usr/local/squid/sbin/squid -z
用來Creating Swap Directories

 

vi一個squid.sh的啟動指令碼如下:賦予可執行許可權

#!/bin/sh
#
ulimit -HSn 15000
# this script starts and stops Squid
echo 15000 > /proc/sys/fs/file-max
case "$1" in
start)
          /usr/local/squid/sbin/squid -s
          echo -n ' Squid'
          ;;
stop)
          /usr/local/squid/sbin/squid -k shutdown
          ;;
esac

#./squid.sh start就可以啟動squid了(還有測試命令如:/usr/local/squid/sbin/squid -CNd1參考下)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.