Squid 代理服务器应用大全
文章目錄
- 一、Squid 服務基礎
- 1.1 緩存代理概述
- (一) 代理的工作機制
- (二)代理的基本類型
- 1.2 編譯安裝及運行步驟(理論)
- 1.編譯安裝Squid(將所需的包上傳到/opt目錄下)
- 2.修改Squid的配置文件
- 3 . Squid 的運行控制
- 4.創建 Squid 服務腳本
- 1.3 編譯安裝及運行具體操作(實操)
- 1.編譯安裝Squid(將所需的包上傳到/opt目錄下)
- ①放入軟件包安裝相關程序
- ②解壓
- ③安裝squid相關模塊
- ④編譯安裝squid
- ⑤優化路徑、創建squid用戶和指定存放緩存文件的路徑
- 2.修改Squid的配置文件
- 3 . Squid 的運行控制
- ①檢查配置文件語法是否正確
- ②啟動Squid, 第一次啟動Squid服務時,會自動初始化緩存目錄
- 4.創建 Squid 服務腳本
- ①創建squid文件寫入腳本
- ②賦予權限加入開機自啟動
- 二、構建代理服務器
- 2.1 傳統代理
- 2.1.1 搭建傳統代理的步驟(理論)
- 1 . 修改squid.conf配置文件
- 2 . 重啟服務
- 3 . 添加設置防火墻規則
- 4 . 修改客戶機代理
- 5 . 訪問web服務器進行驗證
- 2.1.2 搭建傳統代理的具體操作步驟(理論)
- 1 . 修改squid.conf配置文件
- 2 . 重啟服務
- 3 . 添加設置防火墻規則
- 4 . 修改客戶機代理(我這里使用的谷歌瀏覽器)
- ①打開谷歌瀏覽器設置代理服務器
- ②清除瀏覽器緩存
- 5 . web服務器設置
- ①web服務器關閉防火墻安裝httpd服務
- ②開啟httpd服務
- 6 . web服務器使用tail開啟日志跟蹤頁面,Client訪問web服務器進行驗證,可以看到顯示的是squid代理服務器的ip
- 2.2 透明代理
- 2.2.1 搭建透明代理的步驟(理論)
- 1 . Squid服務器:雙網卡
- 2 . quid服務器配置
- ① 修改新網卡配置
- ②修改squid配置文件
- ③路由和防火墻配置
- 2 . web服務器配置
- 3 . client關閉代理服務器
- 4 . wen服務器使用tail目錄追蹤日志,然后client進行訪問web查看日志來訪ip是否為squid服務器
- 2.2.1 搭建透明代理的具體實驗步驟(實操)
- 1 . Squid服務器:雙網卡
- ① 切換到網卡目錄,然后查看新增的網卡是多少,我這里為ens36
- ②復制網卡并配置ip相關
- ③ 重新查看網卡是否配置成功
- ④ 修改squid配置文件,添加ip
- ⑤ 開啟ip轉發功能
- ⑥修改防火墻規則
- 2 . web服務器配置靜態路由
- 3 . Client設置
- ① 關閉代理服務器
- ② Client訪問web服務器測試
- ③ web上查看訪問日志是否為網關地址
- 2.3 ACL 訪問控制
- 2.3.1 設置ACL訪問控制的步驟(理論)
- 1、定義訪問控制列表,
- 方法一:
- 方法二:(我這里使用的方法二)
- 2 . WEB服務器1和WEB服務器2上安裝httpd服務
- 3 . Client客戶上測試
- 2.3.2 設置ACL訪問控制的具體操作步驟(實操)
- 1 . squid服務器上配置
- ① 建立目標 IP 地址名單
- ② 修改squid配置文件
- ③ 重啟squid服務并查看端口
- 2 . WEB1和WEB2上安裝httpd服務并開啟
- ① 關閉防火墻和SElinux
- ② 安裝httpd服務并開啟
- 3 . Client客戶上測試
- ① 設置手動代理服務
- ② 清理緩存記錄
- ③ 訪問WEB1測試
- ④ 訪問WEB2測試
- 2.4 Squid 日志分析
- 2.2.1 實現Squid日志分析的步驟(理論)
- 1 . 安裝 GD 庫
- 2.安裝 SARG
- 3.修改sarg配置文件
- 4 . 添加不加入站點文件
- 5 . 添加計劃任務,執行每天生成報告
- 2.2.2 實現Squid日志分析的具體操作步驟(實操)
- 1 . 安裝 GD 庫
- 2.安裝 SARG
- ① 放入sarg安裝包
- ② 解壓安裝包
- ③ 安裝相關模塊
- ④ 編譯安裝sarg
- 3.修改sarg配置文件
- 4 . 添加不加入站點文件
- ① 優化路徑并啟動sarg
- ② 瀏覽器中訪問squid服務器測試
- 5 . 添加計劃任務,執行每天生成報告
- ① 編寫shell腳本,可以自動生成報告
- ② 加入到計劃性任務中,每天自動生成報告
- 2.5 反向代理
- 2.5.1 反向代理的步驟(理論)
- 1 . 開啟防火墻、關閉httpd服務
- 2 . 清空防火墻規則,并放空3128端口
- 3 . 修改squid配置文件
- 4 . 后端2臺web節點服務器設置
- 5 . 客戶機的域名映射配置
- 6 . 開啟客戶機的代理配置
- 2.5.1 反向代理的具體操作步驟(實操)
- 1 . 關閉httpd服務
- 2 . 清空防火墻規則,并放空3128端口
- 3 . 修改squid配置文件
- 4 . 后端2臺web節點服務器設置
- ① web1安裝http服務并創建網頁文件
- ② web1安裝http服務并創建網頁文件
- 5 . 客戶機的域名映射配置
- ① 找到hosts這個文件
- ② 添加自己需要解析的ip
- 6 . 測試反向代理
- ① 開啟客戶機的代理配置
- ② 訪問squid進行測試反向代理功能
- 三、Squid總結
- 1 . Squid作用:
- 2 . Squid的三種模式:
- ① 傳統模式
- ② 透明代理
- ③ 反向代理
- 3 . 對應Squid自身的管理/功能:
- ① ACL:主要做的是http_access(基于http協議,access訪問)的允許和拒絕管理
- ② Sarg:日志分析功能,可以以天的方式指定將access_log中的內容輸出到一個web頁面中(借助了httpd)展示出來。
一、Squid 服務基礎
Squid 是 Linux 系 統 中 最 常 用 的 一 款 開 源 代 理 服 務 軟 件 ,可以很好地實現 HTTP 和 FTP,以及 DNS 查詢、SSL 等應 用的緩存代理,功能十分強大。
官 方 網 站 為: http://www.squid-cache.org/
1.1 緩存代理概述
作為應用層的代理服務軟件,Squid 主要提供緩存加速、應用層過濾控制的功能。
(一) 代理的工作機制
當客戶機通過代理來請求 Web 頁面時,指定的代理服務器會先檢查自己的緩存:
如果緩存中已經有客戶機需要的頁面,則直接將緩存中的頁面內容反饋給客戶機。
如果緩存中沒 有客戶機要訪問的頁面,則由代理服務器向 Internet 發送訪問請求,獲得返回的 Web 頁面 以后,將網頁數據保存到緩存中并發送給客戶機
HTTP 代理的緩存加速對象主要是文字、圖像等靜態 Web 元素。使用緩存機制后,當 客戶機在不同的時候訪問同一 Web 元素,或者不同的客戶機訪問相同的 Web 元素時,可 以直接從代理服務器的緩存中獲得結果。這樣就大大減少了向 Internet 提交重復的 Web 請 求的過程,提高了客戶機的 Web 訪問響應速度。
由于客戶機的 Web 訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶 的真實 IP 地址,起到一定的保護作用。另一方面,代理服務器擔任著類似“經紀人”的角色, 可以針對要訪問的目標、客戶機的地址、訪問的時間段等進行過濾控制。
(二)代理的基本類型
根據實現方式不同,代理服務可分為傳統代理和透明代理兩種常見的代理服務:
傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、QQ 聊天工具、下載 軟件等程序中手動設置代理服務器的地址和端口,然后才能使用代理來訪問網絡。對于 網頁瀏覽器,訪問網站時的域名解析請求也會發給指定的代理服務器。
透明代理:提供與傳統代理相同的功能和服務,其區別在于客戶機不需要指定代理服務 器的地址和端口,而是通過默認路由、防火墻策略將 Web 訪問重定向,實際仍然交給 代理服務器來處理。重定向的過程對客戶機是“透明”的,用戶甚至并不知道自己在使用 代理服務,所以稱為透明代理。使用透明代理時,網頁瀏覽器訪問網站時的域名解析請 求將優先發給 DNS 服務器。
實際應用中,傳統代理多見于 Internet 環境,如為 QQ 程序使用代理可以隱藏本機真實 IP 地址、為下載工具使用多個代理可以規避服務器的并發連接限制。而透明代理多見于局 域網環境,如在 Linux 網關中啟用透明代理后,局域網主機無須進行額外設置就可以享受更 好的上網速度。
1.2 編譯安裝及運行步驟(理論)
## 首先關閉防火墻和SElinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1.編譯安裝Squid(將所需的包上傳到/opt目錄下)
yum -y install gcc gcc-c++ make
tar zxvf squid-3.5.28.tar.gz -C /opt/ #解壓軟件包
cd /opt/squid-3.5.28
./configure --prefix=/usr/local/squid \ #指定安裝目錄路徑
–sysconfdir=/etc \ #指定配置文件路徑
–enable-arp-acl \ #MAC地址管控,防止客戶端使用IP欺騙
–enable-linux-netfilter \ #使用內核過濾
–enable-linux-tproxy \ #支持透明模式
–enable-async-io=100 \ #異步IO,提升存儲性能
–enable-err-language=“Simplify_ Chinese” \ #錯誤信息的顯示語言
–enable-underscore \ #允許URL中有下劃線
–disable-poll \ #關閉默認使用poll模式
–enable-epoll \ #開啟epoll模式提升性能
–enable-gnuregex #使用GNU正則表達式
make && make install
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/ #此目錄用于存放緩存文件
2.修改Squid的配置文件
vim /etc/squid.conf
…
-----56行–插入------
http_access allow all #放在http_access deny all 之前,允許任意客戶機使用代理服務,控制規則自上而下匹配
http_access deny all
http_port 3128 #用來指定代理服務監聽的地址和端口(默認的端口號為3128)
-----61行–插入------
cache_effective_user squid #添加,指定程序用戶,用來設置初始化、運行時緩存的賬號,否則啟動不成功
cache_effective_group squid #添加,指定賬號基本組
coredump_dir /usr/local/squid/var/cache/squid #指定緩存文件目錄
3 . Squid 的運行控制
#檢查配置文件語法是否正確
squid -k parse
#啟動Squid, 第一次啟動Squid服務時,會自動初始化緩存目錄
squid -z #-z選項用來初始化緩存目錄
squid #啟動squid 服務
netstat -anpt | grep “squid”
4.創建 Squid 服務腳本
vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case “$1” in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo “squid is running”
else
echo “正在啟動 squid…”
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo “squid is not running”
fi
;;
restart)
$0 stop &> /dev/null
echo “正在關閉 squid…”
$0 start &> /dev/null
echo “正在啟動 squid…”
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo “用法:$0{start|stop|status|reload|check|restart}”
;;
esac
#2345是默認自啟動級別,如是 - 代表任何級別都不自啟動; 90是啟動優先級,25是停止優先級,
優先級范圍是0一100,數字越大,優先級越低。
chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on
1.3 編譯安裝及運行具體操作(實操)
首先關閉防火墻和SElinux
1.編譯安裝Squid(將所需的包上傳到/opt目錄下)
①放入軟件包安裝相關程序
②解壓
③安裝squid相關模塊
④編譯安裝squid
⑤優化路徑、創建squid用戶和指定存放緩存文件的路徑
2.修改Squid的配置文件
3 . Squid 的運行控制
①檢查配置文件語法是否正確
②啟動Squid, 第一次啟動Squid服務時,會自動初始化緩存目錄
4.創建 Squid 服務腳本
①創建squid文件寫入腳本
②賦予權限加入開機自啟動
二、構建代理服務器
2.1 傳統代理
使用傳統代理的特點在于客戶機的相關程序(如 IE 瀏覽器、QQ 聊天軟件)必須指定 代理服務器的地址、端口等基本信息。
基于 Internet 網絡環境(如下圖),案例的主要需求描述如下。
在 Linux 主機 B 上,構建 Squid 為客戶機訪問各種網站提供代理服務,但禁止通過代 理下載超過 10MB 大小的文件。 -
在客戶機 C 上,指定主機 B 作為 Web 訪問代理,以隱藏自己的真實 IP 地址。
針對上述實驗環境,主機 B 作為代理服務器,必須正確構建 Squid 服務,并允許客戶 機使用代理。若要客戶機通過代理以 http://www.bdqn.com/的域名形式訪問,則代理服務器 本身必須能夠正確解析該域名。主機 C 作為客戶機,需要為瀏覽器等程序指定所使用的代 理服務器地址、端口號等信息,主機 A 作為測試網站,需要啟用 httpd 服務。
2.1.1 搭建傳統代理的步驟(理論)
環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) 192.168.80.10 squid-3.5.28.tar.gz nat模式
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
client客戶端 Win10客戶端 192.168.80.100 —— nat模式
1 . 修改squid.conf配置文件
vim /etc/squid.conf
…
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_leffective_group squid
-------63行–插入---------
cache_mem 64 MB
#指定緩存功能所使用的內存空間大小,便于保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4
reply_body_max_size 10 MB
#允許用戶下載的最大文件大小,以字節為單位,當下載超過指定大小的Web對象時,瀏覽器的報錯頁面中會出現“請求或訪問太大”的提示默認設置0表示不進行限制
maximum_object_size 4096 KB
#允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶
2 . 重啟服務
service squid restart
systemctl restart squid
3 . 添加設置防火墻規則
#生產環境中還需要修改防火墻規則
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
4 . 修改客戶機代理
#客戶機的代理配置
打開瀏覽器,工具–>Internet選項–>連接 -->局域網設置–>開啟代理服務器 (地址: Squid服務器IP地址,端口: 3128)
清除緩存后,使用瀏覽器訪問http://192.168.80.10 (web服務器地址)
5 . 訪問web服務器進行驗證
#查看Squid訪問日志的新增記錄
tail -f /usr/local/squid/var/logs/access.log
#查看Web訪問日志的新增記錄
tail -f /var/log/httpd/access_log
在瀏覽器輸入Web服務器IP地址訪問,查看Web服務器訪問日志,顯示的是由代理服務器替客戶機在訪問。
2.1.2 搭建傳統代理的具體操作步驟(理論)
1 . 修改squid.conf配置文件
2 . 重啟服務
3 . 添加設置防火墻規則
4 . 修改客戶機代理(我這里使用的谷歌瀏覽器)
①打開谷歌瀏覽器設置代理服務器
②清除瀏覽器緩存
5 . web服務器設置
①web服務器關閉防火墻安裝httpd服務
②開啟httpd服務
6 . web服務器使用tail開啟日志跟蹤頁面,Client訪問web服務器進行驗證,可以看到顯示的是squid代理服務器的ip
2.2 透明代理
透明代理提供的服務功能與傳統代理是一致的,但是其“透明”的實現依賴于默認路由和 防火墻的重定向策略,因此更適用于為局域網主機服務,而不適合為 Internet 中的客戶機提 供服務。
在 Linux 網關上,構建 Squid 為客戶機訪問 Internet 提供代理服務。
在所有的局域網客戶機上,只需正確設置 IP 地址、默認網關和 DNS,不需要手動指定 代理服務器的地址、端口等信息。
環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) ens33:192.168.80.10,ens37:12.0.0.1 squid-3.5.28.tar.gz ens33為nat模式,ens36為僅主機
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
client客戶端 Win10客戶端 12.0.0.12 —— 僅主機模式
2.2.1 搭建透明代理的步驟(理論)
1 . Squid服務器:雙網卡
內網ens33: 192.168.80.10 外網ens36: 12.0.0.1
2 . quid服務器配置
① 修改新網卡配置
cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36 #修改以下內容,網關和dns不需要
…
NAME=ens36
DEVICE=ens36
IPADDR=12.0.0.1
NETMASK=255.255.255.0
systemctl restart network
②修改squid配置文件
vim /etc/squid.conf
http_access allow all
http_access deny all
–60行–修改添加提供內網服務的IP地址,和支持透明代理選項transparent
http_port 192.168.80.20:3128 transparent
systemctl restart squid
③路由和防火墻配置
#開啟路由轉發,實現本機中不同網段的地址轉發
echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
sysctl -p
#修改防火墻規則
iptables -F
iptables -t nat -F
##將來源為12.0.0.0 網段:80/443端口的流量重定向到3128端口
iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #用于轉發http協議
iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #用于轉發https協議
#若進行重啟,則需要配置以下規則
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
2 . web服務器配置
##添加一條靜態路由
route add -net 12.0.0.0/24 gw 192.168.80.10
3 . client關閉代理服務器
打開瀏覽器,工具–>Internet選項–>連接 -->局域網設置–>關閉代理服務器
4 . wen服務器使用tail目錄追蹤日志,然后client進行訪問web查看日志來訪ip是否為squid服務器
tail -f /var/log/httpd/access_log
2.2.1 搭建透明代理的具體實驗步驟(實操)
1 . Squid服務器:雙網卡
① 切換到網卡目錄,然后查看新增的網卡是多少,我這里為ens36
②復制網卡并配置ip相關
③ 重新查看網卡是否配置成功
④ 修改squid配置文件,添加ip
⑤ 開啟ip轉發功能
⑥修改防火墻規則
2 . web服務器配置靜態路由
3 . Client設置
① 關閉代理服務器
② Client訪問web服務器測試
③ web上查看訪問日志是否為網關地址
squid上查看訪問日志
2.3 ACL 訪問控制
Squid 提供了強大的代理控制機制,通過合理設置 ACL(Access Control List,訪問控 制列表)并進行限制,可以針對源地址、目標地址、訪問的 URL 路徑、訪問的時間等各種 條件進行過濾。
在配置文件 squid.conf 中,ACL 訪問控制通過以下兩個步驟來實現:
1.使用 acl 配置項定義需要控制的條件;
2.通過 http_access 配置項對已定義的列表做“允許”或“拒 絕”訪問的控制。
2.3.1 設置ACL訪問控制的步驟(理論)
環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) 192.168.80.10 squid-3.5.28.tar.gz nat模式
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
web服務器 CentOS7.4(64 位) 192.168.80.30 Apache nat模式
client客戶端 CentOS7.4(64 位) 192.168.80.40 —— nat模式
1、定義訪問控制列表,
格式:
acl列表名稱 列表類型 列表內容
列表名稱:名稱自定義,相當于給ac1起個名字
列表類型:必須使用squid預定義的值,對應不同類別的控制條件
列表內容:是要控制的具體對象,不同類型的列表所對應的內容也不一樣,可以有多個值(以空格為分隔,為“或"的關系)
方法一:
vim /etc/squid.conf
…
acl localhost src 192.168.80.10/32 #源地址為 192.168.184.10
acl MYLAN src 192.168.80.0/24 #客戶機網段
acl destionhost dst 192.168.80.20/32 #目標地址為 192.168.184.20
acl MC20 maxconn 20 #最大并發連接 20
acl PORT port 21 #目標端口 21
acl DMBLOCK dstdomain .qq.com #目標域,匹配域內所有站點
acl BURL url_regex -i ^rtsp:// ^emule:// #以 rtsp://、emule:// 開頭的 URL,-i表示忽略大小寫
acl PURL urlpath_regex -i .mp3$ .mp4$ .rmvb$ #以 .mp3、.mp4、.rmvb 結尾的 URL 路徑
acl WORKTIME time MTWHF 08:30-17:30 #時間為周一至周五 8:30~17:30,“MTWHF”為每個星期的英文首字母
方法二:(我這里使用的方法二)
## 建立目標 IP 地址名單
vim ipblock.list
192.168.80.20 #添加要拒絕的服務器ip
修改squid配置文件
vim /etc/squid.conf
…
# should be allowed (此行下面添加)
acl destionhost dst “/dest.list”
# Deny requests to certain unsafe ports (此行下面添加)
http_access deny destionhost
…
# Squid normally listens to port 3128
http_port 3128 ##修改為3128端口
重啟服務并查看是否開啟
systemctl restart squid.service
netstat -natp | grep 3128
2 . WEB服務器1和WEB服務器2上安裝httpd服務
yum install -y httpd
systemctl start httpd
3 . Client客戶上測試
在火狐瀏覽器中設置手動代理服務
設置步驟: 打開菜單 》》首選項 》》高級 》》 網絡 》》連接
瀏覽器中輸入192.168.80.20和192.168.80.30查看web1是否被拒絕
2.3.2 設置ACL訪問控制的具體操作步驟(實操)
1 . squid服務器上配置
① 建立目標 IP 地址名單
② 修改squid配置文件
③ 重啟squid服務并查看端口
2 . WEB1和WEB2上安裝httpd服務并開啟
① 關閉防火墻和SElinux
② 安裝httpd服務并開啟
3 . Client客戶上測試
① 設置手動代理服務
② 清理緩存記錄
③ 訪問WEB1測試
④ 訪問WEB2測試
2.4 Squid 日志分析
SARG 全稱是 Squid Analysis Report Generator,是一款 Squid 日志分析工具,采用
HTML 格式,詳細列出每位用戶訪問 Internet 的站點信息、時間占用信息、排名、連接次數、 訪問量等。
2.2.1 實現Squid日志分析的步驟(理論)
1 . 安裝 GD 庫
[root@localhost ~]# yum -y install gd gd-devel pcre-devel
2.安裝 SARG
[root@localhost ~]# mkdir /usr/local/sarg
[root@localhost ~]# tar zxf sarg-2.3.7.tar.gz
[root@localhost ~]# cd sarg-2.3.7
##–sysconfdir=/etc/sarg: 配置文件目錄,默認是/usr/loca/etc
##–enable-extraprotection: 添加額外的安全保護
[root@localhost sarg-2.3.7]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
[root@localhost ~]#make && make install
3.修改sarg配置文件
cd /etc/sarg/
vim sarg.conf
-----------------------第7行取消注釋-----------------------------------
access_log /usr/local/squid/var/logs/access.log #指定訪問日志文件
-----------------------第25行取消注釋-----------------------------------
title “Squid User Access Reports” #網頁標題
-----------------------第120行取消注釋-----------------------------------
output_dir /var/www/html/sarg #報告輸出目錄
-----------------------第178行取消注釋-----------------------------------
user_ip no #使用用戶名顯示
-----------------------第184行取消注釋并修改-----------------------------------
topuser_sort_field connect reverse #top排序中,指定連接次數采用降序排列,升序是normal
-----------------------第190行取消注釋并修改-----------------------------------
user_sort_field connect reverse #對于用戶訪問記錄,連接次數按降序排序
-----------------------第206行取消注釋并修改-----------------------------------
exclude_hosts /usr/local/sarg/noreport #指定不計入排序的站點列表的文件
-----------------------第257行取消注釋-----------------------------------
overwrite_report no #同名同日期的日志是否覆蓋
-----------------------第289行取消注釋并修改-----------------------------------
mail_utility mailq.postfix #發送郵件報告命令
-----------------------第434行取消注釋并修改-----------------------------------
charset UTF-8 #指定字符集UTF-8
-----------------------第518行取消注釋-----------------------------------
weekdays 0-6 #top排行的星期周期
-----------------------第525行取消注釋-----------------------------------
hours 0-23 #top排行的時間周期
-----------------------第633行取消注釋-----------------------------------
www_document_root /var/www/html #指定網頁根目錄
4 . 添加不加入站點文件
touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg
## 顯示一下代表成功
SARG: 紀錄在文件: 334, reading: 100.00%
SARG: 成功的生成報告在 /var/www/html/squid-reports/2021Jul05-2021Jul06
5 . 添加計劃任務,執行每天生成報告
vim /usr/local/sarg/report.sh
#!/bin/bash
#Get current date
TODAY=KaTeX parse error: Expected 'EOF', got '#' at position 18: …ate +%d/%m/%Y) #?get one week ag…(date -d “1 day ago” +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d YESTERDAY?YESTERDAY-YESTERDAY?TODAY &> /dev/null
exit 0
chmod +x /usr/local/sarg/report.sh
crontab -e
crontab: installing new crontab
2.2.2 實現Squid日志分析的具體操作步驟(實操)
1 . 安裝 GD 庫
2.安裝 SARG
① 放入sarg安裝包
② 解壓安裝包
③ 安裝相關模塊
④ 編譯安裝sarg
3.修改sarg配置文件
4 . 添加不加入站點文件
① 優化路徑并啟動sarg
② 瀏覽器中訪問squid服務器測試
5 . 添加計劃任務,執行每天生成報告
① 編寫shell腳本,可以自動生成報告
② 加入到計劃性任務中,每天自動生成報告
2.5 反向代理
如果Squid反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;
否則反向代理服務器將向后臺的Web服務器請求資源,然后將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。
工作機制:
緩存網頁對象,減少重復請求
將互聯網請求輪詢或按權重分配到內網web服務器
代理用戶請求,避免用戶直接訪問Web服務器,提高安全
2.5.1 反向代理的步驟(理論)
環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) 192.168.80.10 squid-3.5.28.tar.gz nat模式
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
web服務器 CentOS7.4(64 位) 192.168.80.30 Apache nat模式
client客戶端 Win10 192.168.80.100 —— nat模式
1 . 開啟防火墻、關閉httpd服務
systemctl start firewalld.service
systemctl stop httpd.service
2 . 清空防火墻規則,并放空3128端口
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
3 . 修改squid配置文件
http_port 192.168.80.10:80 accel vhost vport
cache_peer 192.168.80.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.80.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.clj.com
表示對www.clj.com的請求,squid向192.168.80.20和192.168.80.30的80端口發出請求
##重啟squid服務
systemctl stop squid.service
systemctl start squid
####關鍵字解釋如下####
http port 80 accel vhost vport
#squid從一個緩存變成了一個Web服務器反向代理加速模式,這個時候squid在80端口監聽請求,
同時和webserver的請求端口(vhost vport)綁定,這個時候請求到了squid, squid是不用轉發請求的,
而是直接要么從緩存中拿數據要么向綁定的端口直接請求數據。
accel:反向代理加速模式
vhost:支持域名或主機名來表示代理節點
vport :支持IP和端口來表示代理節點
parent :代表為父節點,上下關系,非平級關系
80:代理內部web服務器的80端口
0 :沒有使用icp, 表示就一臺squid服務器
no-query :不做查詢操作,直接獲取數據
originserver :指定是源服務器
round- robin : 指定squid通過輪詢方式將請求分發到其中一臺父節點
maxconn:指定最大連接數
weight :指定權重
name:設置別名
4 . 后端2臺web節點服務器設置
##節點1(web1:192.168.80.20)
echo “this is WEB1” >> /var/www/html/index.html
##節點2(web2:192.168.80.30)
echo “this is WEB1” >> /var/www/html/index.html
5 . 客戶機的域名映射配置
修改C:\Windows\System32\drivers\etc\hosts 文件
192.168.80.10 www.clj.com
6 . 開啟客戶機的代理配置
打開瀏覽器,工具–>Internet選項–>連接–>局域網設置–>開啟代理服務器
(地址: Squid服.務器IP地址,端口: 80)
瀏覽器訪問http:/ /www. clj. com
2.5.1 反向代理的具體操作步驟(實操)
1 . 關閉httpd服務
2 . 清空防火墻規則,并放空3128端口
3 . 修改squid配置文件
4 . 后端2臺web節點服務器設置
① web1安裝http服務并創建網頁文件
② web1安裝http服務并創建網頁文件
5 . 客戶機的域名映射配置
① 找到hosts這個文件
② 添加自己需要解析的ip
6 . 測試反向代理
① 開啟客戶機的代理配置
② 訪問squid進行測試反向代理功能
三、Squid總結
1 . Squid作用:
緩存加速,緩存從后端web服務器獲取到的,加速為了客戶端訪問
2 . Squid的三種模式:
① 傳統模式
需要客戶端指向squid代理服務器,客戶端能感知到squid代理服務器的存在
修改的配置文件:squid.conf 設置 3128 端口、緩存和允許下載的大小
② 透明代理
客戶端不需要配置,只要直接訪問即可,服務端開啟路轉發,借助了防護墻規則及靜態路由的方式,完成透明代理
修改的配置文件:squid.conf 設置ip和 3128 端口
需要設置iptables的流量重定向,將指定網卡網段的流量重定向到 3128 端口
③ 反向代理
作為類似于nginx服務器的反向代理功能,但自身不需要一個首頁,基于ip:端口。權重的方式完成反向代理
修改的配置文件:squid.conf 設置端口為 80
服務端需要開啟客戶機的代理配置
3 . 對應Squid自身的管理/功能:
① ACL:主要做的是http_access(基于http協議,access訪問)的允許和拒絕管理
使用 acl 配置項定義需要控制的條件;
通過 http_access 配置項對已定義的列表做“允許”或“拒 絕”訪問的控制。
② Sarg:日志分析功能,可以以天的方式指定將access_log中的內容輸出到一個web頁面中(借助了httpd)展示出來。
借助SARG日志分析工具實現;
編寫腳本并加入計劃性任務可實現每日自動生成報告。
總結
以上是生活随笔為你收集整理的Squid 代理服务器应用大全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL(11)数据库实现高可用架构之
- 下一篇: NoSQL(1)之 Redis的五大数据