Squid(代理服務)
概念
Squid是一個高性能的代理緩存服務器。可以幫助PC代理去請求頁面數據,並緩存到本地。當第二次繼續訪問時直接將緩存頁面返回給PC。
Squid的特點:
通過緩存的方式為用戶提供WEB訪問以及加速
對用戶訪問的WEB進行過濾控制
Squid工作有三種方式:正向代理、透明代理、反向代理。
理解示意圖:
服務端:搭建正向代理服務
一、使用YUM工具安裝Squid服務
# yum -y install squid
二、編輯Squid主配置文件,默認為簡易配置
# vi /etc/squid/squid.conf (編輯主配置文件
acl localnet src 192.168.1.0/24 #定義一個ACL,名為localnet,基於源地址為192.168.1.0/24網段
http_access allow localnet #調用ACL,允許localnet列表中的網段訪問代理服務器
http_access deny all #拒絕所有
http_port 192.168.1.1:3128 #設置監聽端口和地址,默認為3128
coredump_dir /var/spool/squid #設置高速緩存目錄,默認為/var/spool/squid
access_log /var/log/squid/access.log #日誌文件存放位置
三、開啟服務
# systemctl start squid (開啟服務
# netstat -lnupt |grep squid (查看端口
客戶端:設置代理服務器
設置步驟:打開IE瀏覽器-----Internet屬性------連接-----局域網設置
配置完整解析
配置文件路徑:/etc/squid/squid.conf
日誌文件路徑:/var/log/squid
配置說明
一、基本配置
http_port 192.168.1.1:3128 #設置監聽地址和端口,如果只是端口則表示監聽所有地址。
visible_hostname ren.com
access_log /var/log/squid/access.log #訪問日誌存放位置。
coredump_dir /var/spool/squid #設置一個內核轉存目錄,當Squid掛掉的時候,會將內存中的數據寫到該目錄下,默認為/var/spool/squid。
cache_mgr squiderror@test.com #設置一個郵箱,當用戶使用代理服務器中出現問題,會在錯誤頁面顯示一個郵箱地址,用於用戶反饋錯誤。
reply_body_max_size 1024000 allow al l #限制下載文件大小,單位為字節B。
二、優化配置
cache_dir ufs /var/spool/squid 100 16 256 #設置在本地磁盤設置一個緩存目錄用於緩存數據。
“ufs”表示緩存數據的存儲格式;
“/var/spool/squid”表示設置的緩存目錄;
“100”表示緩存目錄占磁盤空間大小,單位為MB;
“16”表示緩存數據的一級子目錄個數為16個;
“256”表示緩存數據的二級子目錄個數為256個。
cache_mem 1024MB #緩存占物理內存大小。單位為MB。
cache_swap_low 85 #緩存占Swap虛擬內存最低大小為85%。
cache_swap_high 95 #緩存占Swap虛擬內存最高大小為95%。當緩存數據占內存大小到95%時,會自動刪除舊數據釋放內存空間到百分之85%。
minimum_object_size 0KB #設置數據對象(頁面數據)的最小大小,0表示不限制。
maximum_object_size 4096KB #設置數據對象(頁面數據)的最大大小,當大於4MB的數據在不會緩存到磁盤。
三、訪問控制
1、定義一個ACL
書寫格式:acl 列表名 列表類型 內容 | ||
acl localnet src 192.168.1.0/24 #定義一個基於源IP的,名為localnet的ACL,網段為192.168.1.0/24。
acl Safe_ports port 80 #定義一個基於端口的,名為Safe_ports的ACL,端口號為80。
acl Ddomain dstdomain gsgw.com #定義一個基於目標域名的,名為Domain的ACL,域名為為gsgw.com。
acl CONNECT method CONNECT #定義一個基於訪問請求類型的,名為CONNECT的ACL,請求類型為CONNECT。
acl Time time MTWHF 8:30-17:30 #定義一個基於時間的,名為Time的ACL,指定時間段為周一到周五每天的8:30-17:30。
acl MAX maxconm 20 #定義一個客戶機最大連接數,名為MAX的ACL,設置連接數為20。
acl URL url_regex ^https:// #定義一個基於URL地址過濾的,名為URL的ACL,設置URL開頭為https://的地址。正則中“^”表示開頭,“$”表示結尾。
2、調用ACL
http_access deny all #拒絕訪問所有
http_access allow localnet #允許localnet中定義的地址
http_access allow Safe_ports #允許Safe_port中定義的端口
http_access allow Ddomain #允許Ddomain中定義的域名
http_access allow CONNECT #允許CONNECT中定義的HTTP訪問請求類型
http_access allow Time #只有在Time中定義的時間段才能訪問
http_access allow MAX #MAX中定義的客戶機最大連接數為20
http_access allow URL #只允許訪問符合URL中定義的路徑地址
四、開啟透明代理
http_port 192.168.1.0/24:3128 transparent #設置監聽地址和端口,如果只是端口則表示監聽所有地址。並支持透明代理。
五、開啟反向代理
http_port 192.168.1.1:80 vhost vport #設置代理服務器監聽的端口為80,並開啟虛擬主機加速模式。
1、定義後端服務器
#設置後端WEB服務器地址和端口。采用權重調用的方式實現後端WEB服務器的負載均衡。
cache_peer 192.168.1.11 parent 80 0 originserver weight=1 max-conn=30 name=webServer1
cache_peer 192.168.1.12 parent 80 0 originserver weight=1 max-conn=30 name=webServer2
parent後面的0表示ICP端口號,當存在多個Squid服務器時使用。
weight表示設置一個權重值,值高則優先去這臺服務器請求。
max-conn表示連接次數。
name表示定義一個別名,用於下方調用。
2、配置域名轉發
#調用上面定義的服務器,當客戶來代理服務器訪問www.a.com時則將請求轉發給後端的WEB服務器。
cache_peer_domain webServer1 www.a.com
cache_peer_domain webServer2 www.a.com
Squid(代理服務)