1. 在開啓squid以前,你應該驗證其配置文件是否正確。運行以下命令便可:php
# squid -k parse #假如你看不到輸出,配置文件有效,你能繼續後面的步驟。然而,若是配置文件包含錯誤,squid會告訴你css
2. 初始化cache目錄.即創建緩存目錄的存儲格式nginx
# squid -z #只需在第一次啓動squid服務以前執行(在初次運行squid以前,或者不管什麼時候你增長了新的cache_dir,你必須初始化cache目錄。)web
# squid -zX #cache目錄初始化可能花費一些時間,依賴於cache目錄的大小和數量,以及磁盤驅動器的速度。假如你想觀察這個過程,請使用-X選項apache
3. 啓動squid服務vim
# service squid start #最安全作法瀏覽器
# /usr/sbin/squid -s #後臺啓動,有可能不生效緩存
4. 中止squid安全
# squid -k shutdown #最安全的中止squid的方法是使用squid -k shutdown命令服務器
5. 不中斷服務,重配置運行中的squid進程
# squid -k reconfigure #運行中的從新引導配置squid最好的方法。squid.conf文件作了改動。爲了讓新設置生效,你能夠關閉和重啓squid。或者在squid運行時,重配置它。
6. 滾動日誌文件處理
除非你在squid.conf裏禁止,squid會寫大量的日誌文件。你必須週期性的滾動日誌文件,以阻止它們變得太大。squid將大量的重要信息寫入日誌,假如寫不進去了,squid會發生錯誤並退出。爲了合理控制磁盤空間消耗,在cron裏使用以下命令:
squid -k rotate
例如,以下任務接口在天天的早上4點滾動日誌:
0 4 * * * /usr/local/squid/sbin/squid -k rotate
該命令作兩件事。首先,它關閉當前打開的日誌文件。而後,經過在文件名後加數字擴展名,它重命名cache.log,store.log,和 access.log。例如,cache.log變成cache.log.0,cache.log.0變成cache.log.1,如此繼續,滾動到 logfile_rotate選項指定的值。
7.添加啓動項
# echo 'systemctl start squid.service' >> /etc/rc.local
8.默認正向代理(3128)支持https,無需設置加密文件 ,反向代理時須要(通常不用squid作反向代理)
# 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 CONNECT method CONNECT #請求方法以CONNECT #http_access allow all #容許全部人使用該代理. #http_reply_access allow all #容許全部客戶端使用該代理 acl Safe_ports port 80 # 容許安全更新的端口爲80 acl Safe_ports port 443 #容許安全更新的端口爲443 acl localnet src 10.195.249.225 # acl localnet src 10.195.236.141 # http_access allow localnet # http_access deny !Safe_ports # 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」能夠稍稍提升加速某些對日誌文件的寫入,該選項主要是實現優化特性。#
/usr/local/squid/bin/squidclient -p 80 mgr:info /usr/local/squid/bin/squidclient -p 80 mgr:5min
能夠看到詳細的性能狀況,其中PORT是你的proxy的端口,5min能夠是60min
取得squid運行狀態信息:
squidclient -p 80 mgr:info
取得squid內存使用狀況:
squidclient -p 80 mgr:mem
取得squid已經緩存的列表:
squidclient -p 80 mgr:bjects. use it carefully,it may crash
取得squid的磁盤使用狀況:
squidclient -p 80 mgr:diskd
強制更新某個url:
squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php
更多的請查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:
squidclient -h IP(具體偵聽IP) -p 80(具體偵聽端口) mgr:info
實現以下要求:
1,容許週一到週五12:00-14:00和17:30-21:00和雙休能上網,別的時間不能上網
2,禁止下載.exe .rar .mp3 .avi .rmvb .mp4後綴的文件
3,禁止訪問qq.com,mop.com,sina.com,163.com,youku.com
4,禁止訪問網址中包含某些關鍵字的網站:好比 sex news movie sport game stock
5, vip沒有任何限制
--把上面五點狀況作成兩種需求:
1,上課時間不能上任何網站,休息時間能夠上網,但受限, vip沒有任何限制
理論分析:
http_access 容許 vip
http_access 拒絕 限制
http_access 容許 休息時間
http_access deny all
實驗需求一:# vim /etc/squid/squid.confacl lunchtime time MTWHF 12:00-14:00acl dinnertime time MTWHF 17:30-21:00acl weekend time SA 00:00-24:00acl badfile urlpath_regex -i \.mp3$ \.rmvb$ \.exe$ \.zip$ \.mp4$ \.avi$ \.rar$acl badweb dstdom_regex "/etc/squid/denywebsite"acl badword url_regex -i sex news movie sport game stockacl vip arp 00:0C:29:79:0C:1Ahttp_access allow viphttp_access deny badfilehttp_access deny badwebhttp_access deny badwordhttp_access allow lunchtimehttp_access allow dinnertimehttp_access allow weekendhttp_access deny all# vim /etc/squid/denywebsiteqqsinamop163youkud# systemctl restart squid2,上課時間能夠上網,但受限,休息時間能夠無限制上網, vip沒有任何限制理論分析:http_access 容許 viphttp_access 容許 休息時間http_access 拒絕 限制http_access allow all實驗需求二:# vim /etc/squid/squid.confacl lunchtime time MTWHF 12:00-14:00acl dinnertime time MTWHF 17:30-21:00acl weekend time SA 00:00-24:00acl badfile urlpath_regex -i \.mp3$ \.rmvb$ \.exe$ \.zip$ \.mp4$ \.avi$ \.rar$acl badweb dstdom_regex "/etc/squid/denywebsite"acl badword url_regex -i sex news movie sport game stockacl vip arp 00:0C:29:79:0C:1Ahttp_access allow viphttp_access allow lunchtimehttp_access allow dinnertimehttp_access allow weekendhttp_access deny badfilehttp_access deny badwebhttp_access deny badwordhttp_access allow all