1. 程式人生 > >Squid(代理服務)

Squid(代理服務)

linuxsquid

系統版本:CentOS7.X

概念


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列表類型的使用

列表類型

描述

內容

src

基於源IP(客戶機IP)

地址,例如:192.168.1.1

網段,例如:192.168.1.0/24

地址範圍,例如:192.168.1.1-192.168.1.254

dst

基於目標IP(服務器IP)

地址,例如:1.1.1.1

網段,例如:1.1.1.0/24

地址範圍,例如:1.1.1.1-1.1.1.5

port

基於端口

端口,例如:80

srcdomain

基於源域名(客戶機的域名)

域名,例如:source.com

dstdomain

基於目標域名(服務器的域名)

域名,例如:www.baidu.com

method

基於HTTP訪問請求類型

請求類型,例如:CONNECT

time

指定某個星期的時間

例如:MTWHF 8:30-17:30

M表示周一

T表示周二

W表示周三

H表示周四

F表示周五

maxconm

每個客戶機的並發連接數

數字,例如:20

url_regex

要訪問的目標資源URL地址

URL正則表達式,例如:^http://

urlpath_regex

要訪問的目標資源URL完整路徑

URL正則表達式,例如:\.jpg$

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(代理服務)