您好,登錄后才能下訂單哦!
小編給大家分享一下Squid3.0反向代理如何配置及安裝,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
下載squid 3.0
1.可以用下述命令獲得squid
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE13.tar.gz
2.建立squid用戶
useradd squid -M -c “Squid user” -d /dev/null -s /sbin/nologin
3. 配制系統(tǒng)環(huán)境
在我們的Linux下運(yùn)行:
# ulimit -n
1024
很顯然1024可能無法滿足需求,重新設(shè)置
# ulimit -HSn 65536
# ulimit -n
65536
需要將ulimit -HSn 65536設(shè)置在/etc/rc.d/rc.local中,防止重啟后失效, 花費(fèi)時(shí)間來增加這個(gè)限制值的大小。否則,squid在高負(fù)載時(shí)執(zhí)行性能將很低。
當(dāng)然你還可以在每一次系統(tǒng)啟動(dòng)后執(zhí)行上述echo和ulimit命令,或者至少在squid啟動(dòng)之前。假如你使用某個(gè)rc.d腳本來啟動(dòng)squid,那是一個(gè)放置這些命令的好地方。
臨時(shí)端口范圍
臨時(shí)端口是TCP/IP棧分配給出去連接的本地端口。換句話說,當(dāng)squid發(fā)起一條連接到另一臺(tái)服務(wù)器,內(nèi)核給本地socket分配一個(gè)端口號(hào)。這些本地端口號(hào)有特定的范圍限制。例如,在FreeBSD上,默認(rèn)的臨時(shí)端口范圍是1024-5000。
臨時(shí)端口號(hào)的短缺對(duì)非常忙的代理服務(wù)器(例如每秒數(shù)百個(gè)連接)來說,會(huì)較大的影響性能。這是因?yàn)橐恍㏕CP連接在它們被關(guān)閉時(shí)進(jìn)入TIME_WAIT狀態(tài)。當(dāng)連接進(jìn)入TIME_WATI狀態(tài)時(shí),臨時(shí)端口號(hào)不能被重用。
你能使用netstat命令來顯示有多少個(gè)連接進(jìn)入這個(gè)狀態(tài):
% netstat -n | grep TIME_WAIT
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.43.244.42.19583 212.67.202.80.80 TIME_WAIT
tcp4 0 0 192.43.244.42.19597 202.158.66.190.80 TIME_WAIT
tcp4 0 0 192.43.244.42.19600 207.99.19.230.80 TIME_WAIT
tcp4 0 0 192.43.244.42.19601 216.131.72.121.80 TIME_WAIT
tcp4 0 0 192.43.244.42.19602 209.61.183.115.80 TIME_WAIT
tcp4 0 0 192.43.244.42.3128 128.109.131.47.25666 TIME_WAIT
tcp4 0 0 192.43.244.42.3128 128.109.131.47.25795 TIME_WAIT
tcp4 0 0 192.43.244.42.3128 128.182.72.190.1488 TIME_WAIT
tcp4 0 0 192.43.244.42.3128 128.182.72.190.2194 TIME_WAIT
注意這個(gè)例子中既有客戶端連接又有服務(wù)器端的連接??蛻舳诉B接有3128作為臨時(shí)端口號(hào),服務(wù)器端連接有80作為遠(yuǎn)程主機(jī)的端口號(hào)。臨時(shí)端口號(hào)出現(xiàn)在本地地址欄里。在該例子里,它們是19000秒。
在Linux上,簡(jiǎn)單的寫一對(duì)數(shù)字到下列指定文件:
# echo “1024 40000″ > /proc/sys/net/ipv4/ip_local_port_range
不要忘記將這些命令加到你的系統(tǒng)啟動(dòng)腳本中,以使機(jī)器每一次重啟后都生效。
4. 編譯安裝
tar -zxvf squid-3.0.STABLE13.tar.gz
cd squid-3.0.STABLE13
./configure –prefix=/usr/local/squid3 –enable-dlmalloc –enable-gnuregex –enable-async-io –enable-removal-policies=’heap,lru’ –enable-delay-pools –disable-snmp –enable-storeio=’ufs,aufs,null’ –disable-wccp –enable-kill-parent-hack –disable-select –enable-auth=basic –with-aio –disable-ident-lookup –with-filedescriptors=65536 –enable-err-languages=”Simplify_Chinese” –enable-default-err-languages=”Simplify_Chinese”
make
make install
后面每一參數(shù),對(duì)有對(duì)應(yīng)的意思。這里就不在解釋,網(wǎng)上有很多。
其實(shí)squid最重要的就一個(gè)squid.conf的配制問題。
在/usr/local/squid3/etc/squid.conf
參照下面的示例來理解配置文件
visible_hostname squid1.ihompy.com
#設(shè)定squid的主機(jī)名,如無此項(xiàng)squid將無法啟動(dòng)
http_port 80 accel vhost vport
#設(shè)定squid為accel加速模式,vhost必須要加.否則將無法將主機(jī)頭轉(zhuǎn)發(fā)至后端服務(wù)器,訪問時(shí)就會(huì)出現(xiàn)無法找到主機(jī)頭的錯(cuò)誤
cache_peer www.contentchina.com parent 80 0 no-query originserver name=contentchina
cache_peer bbs.contentchina.com parent 80 0 no-query originserver name=bbs
cache_peer www.ihompy.com parent 80 0 no-query originserver name=ihompy
#定義不同的父節(jié)點(diǎn),將節(jié)點(diǎn)設(shè)為no-query以及originserver說明這些節(jié)點(diǎn)是實(shí)際服務(wù)器
cache_peer_domain contentchina www.contentchina.com
cache_peer_domain bbs bbs.contentchina.com
cache_peer_domain ihompy www.ihompy.com
#設(shè)定不同域名轉(zhuǎn)發(fā)到不同的cache_peer上,如果沒有這項(xiàng).不同域名的域名可能被分發(fā)到同一臺(tái)服務(wù)器上.
acl all src 0.0.0.0/0.0.0.0
http_access allow all
#允許所有客戶端訪問
cache_log /var/log/squid/cache.log
#記錄日志
#***********ACL存取控制*************
acl QueryString url_regex \.
php?
#***********緩沖存取控制*************
no_cache deny QueryString
#不對(duì)符合QueryString的ACL內(nèi)容進(jìn)行緩沖
#***********性能優(yōu)化配置*************
maximum_object_size 320010 KB
#大于此容量的對(duì)象將不會(huì)被保存在磁盤上,默認(rèn)大小是4M,如果squid服務(wù)器用于緩沖flash等大型文件,建議將此值變大.否則過大的文件在下次重啟后將需要重新獲取
maximum_object_size_in_memory 100 KB
#最大位于內(nèi)存中的對(duì)象的大小,默認(rèn)大小是8K,如果服務(wù)器內(nèi)存很大.可以適當(dāng)提高此值的大小,建議根據(jù)網(wǎng)站的80%圖片的大小來定.或者根據(jù)WEB服務(wù)器實(shí)際存取文件中最常訪問的文件大小來定制
#***********其他可選配置*************
dns_nameservers 10.0.0.1 192.172.0.4
#配置DNS服務(wù)器地址.獲取后端時(shí)將從此dns獲取IP地址
cache_mgr code_tin@msn.com
#在錯(cuò)誤日志中出現(xiàn)的webmaster地址.
Squid 3.0與2.6一樣.相較2.5的accel模式下配置要簡(jiǎn)單許多
只要設(shè)置不同的后端,cache_peer parent originserver
就可以進(jìn)行反向代理
而不再需要httpd_accel系列參數(shù)的配置.
配置squid時(shí)最好制定內(nèi)部dns,或者修改/etc/hosts文件
否則squid可能會(huì)回環(huán)訪問其自身而出現(xiàn)問題.
自己的配置過程:
http_port 80 選項(xiàng) http_port 指定squid監(jiān)聽HTTP請(qǐng)求的端口,一般都設(shè)置成80端口,這樣使用戶感覺不到反向代理的存在,就像訪問真正
的WEB服務(wù)器一樣。
我配置的是:http_port 80 accel vhost vport
cache_mem 128 MB 共享內(nèi)存大小(squid在提供服務(wù)的時(shí)候所使用的內(nèi)存)
maximum_object_size_in_memory 512 KB 最大緩存文件大小,超過此值則不緩存
memory_replacement_policy lru 替換機(jī)制 (lru叫做 最近不常用的單元 unit一般就是常說的object 也就是當(dāng)cache中的內(nèi)容比如內(nèi)存或硬盤達(dá)到上限時(shí)的 那么就需要進(jìn)行數(shù)據(jù)的換進(jìn)和換出工作)
cache_dir null /tmp cache_dir存儲(chǔ)cache內(nèi)容也就是object的物理存放點(diǎn)
cache_dir ufs /tmp1 10000 16 256 (/tmp size L1 L2)
100G其中1層目錄16個(gè) 并且每個(gè)1層目錄下又有256個(gè)2層目錄[或者說子目錄]
#磁盤緩存的類型和目錄,大小,一二級(jí)目錄的設(shè)置,這里磁盤緩存大小是10G
ufs是一種文件存儲(chǔ)方式 因?yàn)閛s一般都是從內(nèi)存獲取數(shù)據(jù) 那么內(nèi)存的東西必須最后寫的硬盤上~
sync 同步的時(shí)候用的ufs 那么squid也是一樣
ufs一般是同時(shí)寫入內(nèi)存和硬盤
注意:size是按照M為單位的也就這個(gè)目錄中最大存儲(chǔ)容量的上限
max_open_disk_fds 0
minimum_object_size 0 KB
maximum_object_size 4096 KB
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
設(shè)置access_log中日志存儲(chǔ)的格式~
access_log /usr/local/squid3/var/logs/access.log squid
access_log為客戶端請(qǐng)求的日志
cache_log /usr/local/squid3/var/logs/cache.log
為squid自身的運(yùn)行日志
pid_filename /usr/local/squid3/var/logs/squid.pid
此三項(xiàng)是設(shè)置PID和日志文件位置
cache_store_log none 不記錄store.log 我配置的是可以允許
visible_hostname wqgcool.wqgcool.net
wqgcool.wqgcool.net 只是標(biāo)簽 有利于檢查是否你的那臺(tái)設(shè)備在提供服務(wù)!
cache_peer newtest.haishang.com parent 80 0 no-query round-robin max-conn=32 originserver
acl all src 0.0.0.0/0.0.0.0 */3.0后默認(rèn)是全部允許了。
故配置成:acl all src
給/usr/local/squid3/var/logs 等權(quán)限
chmod -R 777 /usr/local/squid3/var
chmod -R 777 /usr/local/squid3/var/logs
chown squid:squid -R /usr/local/squid3/var/logs
接下來
acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe
cache deny QUERY
這個(gè)squid.conf我沒找到。
cache_effective_user squid
cache_effective_group squid
這兩個(gè)我沒有配置,如配置的話,squid啟動(dòng)一會(huì)兒就會(huì)關(guān)閉。
沒啟用的話,進(jìn)程里會(huì)顯示nobody身份啟動(dòng)的。反正不影響工作。
可以用ps auxwww | grep squid 查看進(jìn)程
5.測(cè)試配置是否正確
# /usr/local/squid2/sbin/squid -k parse
出現(xiàn)ERROR:
WARNING: Cannot write log file: /usr/local/squid3/var/logs/cache.log
/usr/local/squid3/var/logs/cache.log: Permission denied
messages will be sent to ‘stderr’.
2008/03/13 12:53:09| Creating Swap Directories
FATAL: Failed to make swap directory /usr/local/squid3/var/cache: (13) Permission denied
/usr/local/squid2/sbin/squid -z
Create swap directories 是創(chuàng)建SWAP目錄的! 也就是cache_dir 中的目錄
啟動(dòng)squid
/usr/local/squid3/sbin/squid -Nd1
ps aux |grep squid 查看是否啟動(dòng)
squid 常用命令
Squid安裝設(shè)試命令:
很明顯權(quán)限不對(duì),修改后測(cè)試通過!
1,初始化你在 squid.conf 里配置的 cache 目錄
#/usr/local/squid/sbin/squid -z //初始化緩存空間
如果有錯(cuò)誤提示,請(qǐng)檢查你的 cache目錄的權(quán)限。
2,對(duì)你的squid.conf 排錯(cuò),即驗(yàn)證 squid.conf 的 語法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有語法或配置錯(cuò)誤,這里會(huì)返回提示你,如果沒有返回,恭喜,可以嘗試啟動(dòng)squid。
3,在前臺(tái)啟動(dòng)squid,并輸出啟動(dòng)過程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,啟動(dòng)成功。
然后 ctrl + c,停止squid,并以后臺(tái)運(yùn)行的方式啟動(dòng)它。
4,啟動(dòng)squid在后臺(tái)運(yùn)行。
#/usr/local/squid/sbin/squid -s
這時(shí)候可以 ps -A 來查看系統(tǒng)進(jìn)程,可以看到倆個(gè) squid 進(jìn)程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
這個(gè)不用解釋吧。
6,重引導(dǎo)修改過的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure //載入新的配置文件
這個(gè)估計(jì)用的時(shí)候比較多,當(dāng)你發(fā)現(xiàn)你的配置有不盡你意的時(shí)候,可以隨時(shí)修改squid.conf,然后別忘記對(duì)你的 squid.conf排錯(cuò),然后再執(zhí)行此指令,即可讓squid重新按照你的 squid.conf 來運(yùn)行。
7./usr/local/squid/sbin/squid -k rotate 輪循日志
8,把squid添加到系統(tǒng)啟動(dòng)項(xiàng)
編輯 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
利用Runc腳本……..
再來點(diǎn)其他的。
1,修改cache 緩存目錄的權(quán)限。
#chown -R squid:squid /data/cache
我的cache緩存目錄是 /data/cache,squid執(zhí)行用戶和用戶組是 squid,squid。
2,修改squid 日志目錄的權(quán)限
#chown -R squid:squid /usr/local/squid/var/logs
這一步并不是適合每一個(gè)使用squid的用戶.意為讓squid有權(quán)限在該目錄進(jìn)行寫操作 。
例如生成 access.log cache.log store.log
3,查看你的日志文檔。
#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
該指令可以看到在squid運(yùn)行過程中,有那些文件被squid緩存到內(nèi)存中,并返回給訪問用戶。
#more /usr/local/squid/var/logs/access.log | grep TCP_HIT
該指令可以看到在squid運(yùn)行過程中,有那些文件被squid緩存到cache目錄中,并返回給訪問用戶。
#more /usr/local/squid/var/logs/access.log | grep TCP_MISS
該指令可以看到在squid運(yùn)行過程中,有那些文件沒有被squid緩存,而是現(xiàn)重原始服務(wù)器獲取并返回給訪問用戶。
關(guān)于 TCP_XXXX 等參數(shù)及代表的信息,請(qǐng)參看《squid中文權(quán)威指南》13.2.1 章節(jié)。
當(dāng)然,本例中的藍(lán)色文字是可以修改為其他的參數(shù),例如你的域名 www.xxxx.com ,同樣可以看到access.log里關(guān)于該域名的行。
二.squid命中率分析
squid/bin/squidclient -p 80 mgr:info
squid/bin/squidclient -p 80 mgr:5min
可以看到詳細(xì)的性能情況,其中PORT是你的proxy的端口,5min可以是60min
取得squid運(yùn)行狀態(tài)信息: squidclient -p 80 mgr:info
*取得squid內(nèi)存使用情況: squidclient -p 80 mgr:mem
*取得squid已經(jīng)緩存的列表: squidclient -p 80 mgrbjects. use it carefully,it may crash
*取得squid的磁盤使用情況: squidclient -p 80 mgr:diskd
*強(qiáng)制更新某個(gè)url:squidclient -p 80 -m PURGE http://www.yejr.com/static.php
*更多的請(qǐng)查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:
/usr/local/squid/bin/squidclient -h211.222.111.111 -p80 mgr:info
/usr/local/squid/bin/squidclient -h具體的IP -p80 mgr:info
以上是“Squid3.0反向代理如何配置及安裝”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。