歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

squid2.7安裝與配置

CleverCode最近研究了一下squid的安裝與配置。現在總結一下。分享給大家。

 

1 簡介

 

代理服務器英文全稱是Proxy Server,其功能就是代理網絡用戶去取得網絡信息。

Squid是一個緩存Internet 數據的軟件,其接收用戶的下載申請,並自動處理所下載的數據。當一個用戶想要下載一個主頁時,可以向Squid 發出一個申請,要Squid 代替其進行下載,然後Squid 連接所申請網站並請求該主頁,接著把該主頁傳給用戶同時保留一個備份,當別的用戶申請同樣的頁面時,Squid 把保存的備份立即傳給用戶,使用戶覺得速度相當快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等協議並且Squid 可以自動地進行處理,可以根據自己的需要設置Squid,使之過濾掉不想要的東西。

1.1 工作流程

當代理服務器中有客戶端需要的數據時:
a. 客戶端向代理服務器發送數據請求;
b. 代理服務器檢查自己的數據緩存;
c. 代理服務器在緩存中找到了用戶想要的數據,取出數據;
d. 代理服務器將從緩存中取得的數據返回給客戶端。

當代理服務器中沒有客戶端需要的數據時:
1. 客戶端向代理服務器發送數據請求;
2. 代理服務器檢查自己的數據緩存;
3. 代理服務器在緩存中沒有找到用戶想要的數據;
4. 代理服務器向Internet 上的遠端服務器發送數據請求;
5. 遠端服務器響應,返回相應的數據;
6. 代理服務器取得遠端服務器的數據,返回給客戶端,並保留一份到自己的數據緩存中。

\


Squid代理服務器工作在TCP/IP的應用層。

\


1.2 Squid 分類

按照代理類型的不同,可以將Squid 代理分為正向代理和反向代理,正向代理中,根據實現方式的不同,又可以分為普通代理和透明代理。

普通代理:需要客戶機在浏覽器中指定代理服務器的地址、端口;

透明代理:適用於企業的網關主機(共享接入Internet)中,客戶機不需要指定代理服務器地址、端口等信息,代理服務器需要設置防火牆策略將客戶機的Web訪問數據轉交給代理服務程序處理;

反向代理:是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

 

2 系統環境

操作系統:CentOS release 6.5 (Final)
Squid版本:squid-2.7.STABLE9-20101125.tar.gz
本次安裝squid軟件下載地址:

http://download.csdn.net/detail/clevercode/9337437。

 

3 安裝步驟

安裝前確保進行安裝Linux常備支持庫,否則會出現各種錯誤!Linux中必備常用支持庫的安裝詳解:http://blog.csdn.net/clevercode/article/details/45438401。

1)解壓squid-2.7.STABLE9-20101125.tar.gz
# cd /usr/local/src/squid
# tar zxvf squid-2.7.STABLE9-20101125.tar.gz

2)進入解壓後的目錄
# cd squid-2.7.STABLE9-20101125

3)配置
# ./configure --prefix=/usr/local/squid \
--enable-gnuregex --disable-carp --enable-async-io=240 \
--with-pthreads --enable-storeio=ufs,aufs,diskd \
--disable-wccp --enable-icmp --enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-default-err-language=Simplify_Chinese \
--with-maxfd=65535 --enable-epoll \
--enable-linux-netfilter --enable-large-cache-files \
--enable-default-hostsfile=/etc/hosts --with-dl \
--with-large-files --enable-delay-pools --enable-snmp \
--enable-arp-acl --prefix=/usr/local/squid

4) 編譯
# make

5) 安裝
# make install

6)配置用戶屬組 創建、初始化目錄:
# groupadd www #添加www組
# useradd -g www www -s /bin/false #創建nginx運行賬戶www並加入到www組,不允許www用戶直接登錄系統

# mkdir -p /data0/cache/logs/
# chmod 755 /data0/cache/ -R
# chown www.www /data0/cache -R

 

 

4 實際應用


4.1 普通代理服務

即標准的、傳統的代理服務,需要客戶機在浏覽器中指定代理服務器的地址、端口。
請參考:http://www.cnblogs.com/mchina/p/3812190.html。

4.2 透明代理服務

適用於企業的網關主機,客戶機不需要指定代理服務器地址、端口等信息,通過iptables將客戶機的Web訪問數據轉交給代理服務程序處理。
請參考:http://www.cnblogs.com/mchina/p/3812190.html。

4.3反向代理服務

為Internet用戶訪問企業Web站點提供緩存加速。

 

 

4.3.1 需求背景

下面實驗將模擬通過不同的域名訪問不同的機器,簡單實現企業應用中的負載均衡。
客戶端在浏覽器地址欄中輸入pic.domain.com,pic2.domain.com,將訪問192.168.142.130這台機器,
訪問res.domain.com res2.domain.com,將訪問192.168.142.131這台機器。

 

squid服務器:192.168.142.133。

web服務器:192.168.142.130 與192.168.142.131。

\

 

4.3.2 配置squid.conf

 

# cd /usr/local/squid/etc/
# mv squid.conf squid.conf.bak

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

 

#主機名
visible_hostname   static.squid-133

#設置監聽的IP與端口號
http_port 80 vhost vport

#額外提供給squid使用的內存,squid的內存總占用為 X * 10+15+“cache_mem”,其中X為squid的cache占用的容量(以GB為單位)
#比如下面的cache大小是100M,即0.1GB,則內存總占用為0.1*10+15+64=80M,推薦大小為物理內存的1/3-1/2或更多。 
cache_mem 4096 MB

#設置squid磁盤緩存最大文件,超過2M的文件不保存到硬盤
maximum_object_size_in_memory 2048 KB

#使用lru表示:它只替換長時間沒有被訪問過的對象
memory_replacement_policy lru

#此記錄文件用來記錄緩沖對象的添加,刪除情況(一般可設置為:cache_store_log none,
#來降低日志文件占用的磁盤空間,這一點請特別注意。)
cache_store_log none

#log文件日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %

 

4.3.3 初始化配置

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

看到以下提示初始化正常。
2015/12/08 04:03:34| Creating Swap Directories

 

 

4.3.4 啟動

 

# 後台啟動

# /usr/local/squid/sbin/squid -s

4.3.5 訪問

1)通過訪問http://res.domain.com/comm.js。可以到看到res.domain.com是指向了192.168.142.133。但是實際取出js文件是從192.168.142.131服務器中取得。

\

2)修改comm.js 成為如下內容。但是發現訪問comm.js內容還是沒有變。

#vi comm.js

this is from 192.168.142.131 js! i am change !

\

3)清除133緩存,再訪問數據就變了。

# /usr/local/squid/bin/squidclient -m PURGE -p 80 "http://res.domain.com/comm.js"

\

4)改變URL也會是數據變化。squid緩存的key可以理解為url的md5。只要url發生了變化,那麼數據就會發生編號。

如圖訪問:http://res.domain.com/comm.js?r=123456。

\

5 )訪問圖片

\

5 squid常用管理命令

# /usr/local/squid/sbin/squid -z 初始化緩存空間
# /usr/local/squid/sbin/squid 前台啟動 (用於輸出調試)
# /usr/local/squid/sbin/squid -s 後台啟動
# /usr/local/squid/sbin/squid -k shutdown 停止
# /usr/local/squid/sbin/squid -k reconfigure 重新載入配置文件
# /usr/local/squid/sbin/squid -k parse 檢查conf
# /usr/local/squid/sbin/squid -k rotate 優化碎片

# /usr/local/squid/bin/squidclient -p 80 mgr:info 查看squid命中情況
# /usr/local/squid/bin/squidclient -m PURGE -p 80 "http://res.domain.com/comm.js" 刪除指定URL緩存

 

Copyright © Linux教程網 All Rights Reserved