Squid 緩存代理服務器前端
Squid 的做用web
1.經過緩存的方式爲用戶提供web訪問加速正則表達式
2.對用戶的web訪問進行過濾控制瀏覽器
緩存代理服務器又分爲普通代理服務器,透明代理服務器,和反向代理服務器。緩存
普通代理服務即指標準的,傳統的代理服務,須要客戶機在瀏覽器中指定代理服務器的地址,端口服務器
透明代理服務器適合企業的網關主機,客戶機不須要指定代理服務器地址,端口等信息,須要設置防火牆策略將客戶機的web訪問數據轉交給代理服務器網絡
反向代理服務爲INTERNET用戶訪問網絡內網站點提供緩存加速。提升訪問效率。併發
squid 緩存代理服務的軟件安裝包名爲 squid-2.6.STABLE21-3.el5(版本可能不一樣),默認監聽端口爲TCP 3128 默認訪問日誌文件 :/var/log/squid/access.log 進程名爲squid , 主程序:/usr/sbin/squid ,配置目錄:/etc/squid 主配置文件是 /etc/squid/squid.conf dom
咱們已經對squid有了初步的認識,如今瞭解一下主配置文件squid.conf 的幾個經常使用配置項ide
http_port 3128 此項設定默認監聽端口,能夠改變IP與監聽端口
cache_mem 64 MB 設定緩存大小,通常狀況下建議將物理內存的1/3劃給它
maximum_object_size 4096 KB 定義最大緩存對象
reply_body_max_size 10240000 allow all 訪問控制規則,對響應數據作限定,若是把這個值設定爲0 就表示不作限定
access_log /var/log/squid/access.log squid 爲squid作訪問日誌
visible_hostname proxy.test.com 可見主機名,默認配置文檔中並無定義,建議設定,不然影響squid啓動
cache_dir ufs /var/spool/squid 1024 16 256
(緩存文件放置位置,ufs是文件系統類型,1024指定緩存目錄大小, 16 緩存空間一級子目錄個數, 256 指緩存空間的二級子目錄個數)
cache_mgr root@test.com 定義服務器管理員郵箱
cache_effective_user squid
ache_effective_group squid 定義squid的UID GID
error_directory /usr/share/squid/errors/Simplify_Chinese 定義錯誤信息顯示爲中文,squid錯誤信息支持多種語言。能夠在/usr/share/squid/errors 下查看
http_access allow localhost
http_access deny all 訪問控制策略,
在沒有設置任何規則時,將拒絕全部客戶端的訪問請求
有規則可是找不到相匹配的項時,將採起與最後一條規則相反的權限,即若是最後一條規則是allow 那麼就拒絕客戶端的請求,不然容許該請求
ACL(Access Control List )訪問控制列表,能夠從客戶機的IP地址,請求訪問的URL/域名/文件類型/訪問時間/併發請求等方面進行控制
ACL的格式是
acl 列表名稱 列表類型 列表內容
acl列表的使用在squid的官方網站上有詳細的介紹,下面只介紹幾種經常使用的acl列表類型
src 基於客戶端IP地址作控制, 源ip
dst 基於訪問目的IP作控制
srcdomain 基於域名的源地址解析
port 基於端口控制
proto 基於協議類型作控制
browser 對瀏覽器的作控制 # acl notfirefox browser MOZILIA
time 基於時間作控制,acl worktime time 10:00-23:59
acl working time 0:00-5:59
(注意:time時間控制時,前一個時間點要小於後一個時間點,如果要過0點設定,就仿寫成上面例子,列表名稱能夠同樣,acl匹配時取它們的並集)
maxconn 最大併發鏈接數
url_regex [-i ] 統一資源,針對url作正則表達式匹配 -i 不區分大小寫
acl notpdf url_regex –i ^http.*\.pdf$
urlpath_regex [-i] 可不指定前端只對url 尾部作匹配
acl notpdf urlpath_regex –i .*\.pdf$
下面先來配置一個傳統的代理服務
要求作一個普通代理,pc機能經過squid服務器訪問外網192.168.0.254的web服務,可是在18:30-8:30之間內網用戶不能上網,不能訪問下載以.rmvb .mp3爲後綴的文件,單個文件最大不能超過10M 代理端口爲8080,錯誤提示呈現爲中文,管理員郵箱爲root@test.com, 內存大小爲64M, 緩存目錄大小爲1024M, 併爲squid配置可見主機名
1 安裝squid軟件包
#yum install squid
2 編輯/etc/squid/squid.conf
配置可見主機名
指定緩存目錄大小
配置管理員郵箱
定義內存大小
指定 緩存目錄爲1024M
定義錯誤信息顯示
定義最大單個文件大小
修改監聽端口
最acl控制
3.如今 到內網pc機上將爲瀏覽器配置代理服務,將ip指向192.168.0.72 端口指向8080
如今連上0.254 了測試一下你作的acl 控制吧
如今咱們把題目修改一下,把上面的普通代理作成透明代理
1 修改squid.conf 配置文件,並從新加載該配置項
只須要修改一下監聽端口
2.在squid主機上添加iptables 規則
3 客戶機瀏覽器不須要指定代理服務器的地址,端口
作完透明代理訪問也是同樣的
下面再介紹一下反向代理
1.修改squid.conf 文件,並重啓加載配置項
(cache_peer web 服務器 服務器類型 http端口 icp端口 可選項)
http_port 192.168.0.74:80 vhost 修改監聽端口
cache_peer 192.168.10.2 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.10.3 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.10.4 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.10.5 parent 80 0 originserver weight=1 max-conn=8
2,好了如今能夠驗證了,在外網的客戶機訪問反向代理服務器192.168.0.74可以看到web提供的網頁
(注意透明代理服務器和反向代理服務器不能配置在一臺squid服務器上)