Squid是一個高性能的代理緩存服務器,Squid支持FTP、gopher、HTTPS和HTTP協議。和通常的代理緩存軟件不一樣,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理全部的客戶端請求。php
下載地址 http://www.squid-cache.org/Versions/html
tar zxvf squid-3.5.27.tar.gz cd squid-3.5.27/ ./configure make && make install
#acl all src 0.0.0.0/0.0.0.0 and http_access allow all選項定義了一個訪問控制列表。詳細狀況參見和Squid軟件 #攜帶的文檔。這裏的訪問控制列表容許全部對代理服務的訪問,由於這裏該代理是加速web服務器。 acl all src 0.0.0.0/0.0.0.0 #容許全部IP訪問 acl manager proto http #manager url協議爲http acl localhost src 127.0.0.1/255.255.255.255 #允午本機IP acl to_localhost dst 127.0.0.1 #允午目的地址爲本機IP acl Safe_ports port 80 # 容許安全更新的端口爲80 acl CONNECT method CONNECT #請求方法以CONNECT http_access allow all #容許全部人使用該代理.由於這裏是代理加速web服務器 http_reply_access allow all #容許全部客戶端使用該代理 acl OverConnLimit maxconn 16 #限制每一個IP最大容許16個鏈接,防止*** http_access deny OverConnLimit icp_access deny all #禁止從鄰居服務器緩衝內發送和接收ICP請求. miss_access allow all #容許直接更新請求 ident_lookup_access deny all #禁止lookup檢查DNS http_port 8080 transparent #指定Squid監聽瀏覽器客戶請求的端口號。 hierarchy_stoplist cgi-bin ? #用來強制某些特定的對象不被緩存,主要是處於安全的目的。 acl QUERY urlpath_regex cgi-bin \? cache deny QUERY cache_mem 1 GB #這是一個優化選項,增長該內存值有利於緩存。應該注意的是: #通常來講若是系統有內存,設置該值爲(n/)3M。如今是3G 因此這裏1G fqdncache_size 1024 #FQDN 高速緩存大小 maximum_object_size_in_memory 2 MB #容許最大的文件載入內存 memory_replacement_policy heap LFUDA #動態使用最小的,移出內存cache cache_replacement_policy heap LFUDA #動態使用最小的,移出硬盤cache cache_dir ufs /home/cache 5000 32 512 #高速緩存目錄 ufs 類型 使用的緩衝值最大允午1000MB空間, #32個一級目錄,512個二級目錄 max_open_disk_fds 0 #容許最大打開文件數量,0 無限制 minimum_object_size 1 KB #允午最小文件請求體大小 maximum_object_size 20 MB #允午最大文件請求體大小 cache_swap_low 90 #最小容許使用swap 90% cache_swap_high 95 #最多容許使用swap 95% ipcache_size 2048 # IP 地址高速緩存大小 2M ipcache_low 90 #最小容許ipcache使用swap 90% ipcache_high 95 #最大容許ipcache使用swap 90% access_log /var/log/squid/access.log squid #定義日誌存放記錄 cache_log /var/log/squid/cache.log squid cache_store_log none #禁止store日誌 emulate_httpd_log on #將使Squid仿照Web服務器的格式建立訪問記錄。若是但願使用 #Web訪問記錄分析程序,就須要設置這個參數。 refresh_pattern . 0 20% 4320 override-expire override-lastmod reload-into-ims ignore-reload #更新cache規則 acl buggy_server url_regex ^http://.... http:// #只容許http的請求 broken_posts allow buggy_server acl apache rep_header Server ^Apache #容許apache的編碼 broken_vary_encoding allow apache request_entities off #禁止非http的標分準請求,防止*** header_access header allow all #容許全部的http報頭 relaxed_header_parser on #不嚴格分析http報頭. client_lifetime 120 minute #最大客戶鏈接時間 120分鐘 cache_mgr sky@test.com #指定當緩衝出現問題時向緩衝管理者發送告警信息的地址信息。 cache_effective_user squid #這裏以用戶squid的身份Squid服務器 cache_effective_group squid icp_port 0 #指定Squid從鄰居服務器緩衝內發送和接收ICP請求的端口號。 #這裏設置爲0是由於這裏配置Squid爲內部Web服務器的加速器, #因此不須要使用鄰居服務器的緩衝。0是禁用 # cache_peer 設置容許更新緩存的主機,因是本機因此127.0.0.1 cache_peer 127.0.0.1 parent 80 0 no-query default multicast-responder no-netdb-exchange cache_peer_domain 127.0.0.1 hostname_aliases 127.0.0.1 error_directory /usr/share/squid/errors/Simplify_Chinese #定義錯誤路徑 always_direct allow all # cache丟失或不存在是容許全部請求直接轉發到原始服務器 ignore_unknown_nameservers on #開反DNS查詢,當域名地址不相同時候,禁止訪問 coredump_dir /var/log/squid #定義dump的目錄 max_filedesc 2048 #最大打開的文件描述 half_closed_clients off #使Squid在當read再也不返回數據時當即關閉客戶端的鏈接。 #有時read再也不返回數據是因爲某些客戶關閉TCP的發送數據 #而仍然保持接收數據。而Squid分辨不出TCP半關閉和徹底關閉。 buffered_logs on #若打開選項「buffered_logs」能夠稍稍提升加速某些對日誌文件的寫入,該選項主要是實現優化特性。 #防止天涯盜鏈,轉嫁給百度 acl tianya referer_regex -i tianya http_access deny tianya deny_info tianya #阻止baidu蜘蛛 acl baidu req_header User-Agent Baiduspider http_access deny baidu #限制同一IP客戶端的最大鏈接數 acl OverConnLimit maxconn 128 http_access deny OverConnLimit #防止被人利用爲HTTP代理,設置容許訪問的IP地址 acl myip dst 222.18.63.37 http_access deny !myip #容許本地管理 acl Manager proto cache_object acl Localhost src 127.0.0.1 222.18.63.37 http_access allow Manager Localhost cachemgr_passwd 53034338 all http_access deny Manager #僅僅容許80端口的代理 acl all src 0.0.0.0/0.0.0.0 acl Safe_ports port 80 # http http_access deny !Safe_ports http_access allow all #Squid信息設置 visible_hostname happy.swjtu.edu.cn cache_mgr ooopic2008@qq.com #基本設置 cache_effective_user squid cache_effective_group squid tcp_recv_bufsize 65535 bytes #2.6的反向代理加速配置 cache_peer 127.0.0.1 parent 80 0 no-query originserver #錯誤文檔 error_directory /usr/local/squid/share/errors/Simplify_Chinese #單臺使用,不使用該功能 icp_port 0 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe cache deny QUERY acl apache rep_header Server ^Apache broken_vary_encoding allow apache refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 cache_store_log none pid_filename /usr/local/squid/var/logs/squid.pid emulate_httpd_log on
個人配置以下:
最主要的關注一下地區訪問linux
#squid經常使用命令 1 初始化在squid.conf裏配置的cache目錄 squid -z 若是有錯誤提示,請檢查cache目錄的權限,能夠更改目錄權限 chown -R squid:squid /cache目錄 2 對squid.conf排錯,即驗證squid.conf的語法和配置 squid -k parse 若是在squid.conf中有語法或配置錯誤,這裏會返回提示,若無返回,嘗試啓動squid 3 前臺啓動squid,並輸出啓動過程 /usr/local/squid/sbin/squid -N -d1 若是有ready to server reques相關信息,說明squid啓動成功 而後ctrl+c ,中止squid,並之後臺運行的方式啓動它 4 啓動squid在後臺運行 squid -s 可使用ps -ax | grep squid 來查看squid進程是否存在 5 中止squid squid -k shutdown 6 從新引導修改過的squid.conf squid -k reconfigure -f /XXX/squid.conf 當squid進行配置更改後,可使用該命令進行squid配置重載 7 把squid添加到系統啓動項 vim /etc/rc.local /usr/local/squid/sbin/squid -s 修改cache緩存目錄的權限 chown -R squid.squid /cache目錄 cache緩存目錄根據本身的配置更改,squid用戶和組是squid,squid 8 修改squid日誌目錄的權限 chown -R squid.squid 定義的日誌文件所在目錄 這一步並非適合每個使用squid的用戶,意爲讓squid有權限在該目錄裏進行寫操做 9 查看你的日誌文檔 more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT 該指令能夠看到在squid運行過程當中,有那些文件被squid緩存到內存中,並返回給訪問用戶。 more /usr/local/squid/var/logs/access.log | grep TCP_HIT 該指令能夠看到在squid運行過程當中,有那些文件被squid緩存到cache目錄中,並返回給訪問用戶。 more /usr/local/squid/var/logs/access.log | grep TCP_MISS 該指令能夠看到在squid運行過程當中,有那些文件沒有被squid緩存,而是從原始服務器獲取並返回給訪問用戶。
運行服務web
# /usr/local/squid/sbin/squid -z 使配置文件生效(修改配置文件後須要執行) # /usr/local/squid/sbin/squid -k parse 之後臺進程的形式啓動squid # /usr/local/squid/sbin/squid -s
推薦參考文章:apache