缓存加速-----Squid-访问控制列表日志分析反向代理
文章目錄
- 一: ACL訪問控制
- 1.1: ACL訪問控制概述
- 1.2: ACL訪問控制實驗
- 二: Squid日志分析
- 三: 反向代理
- 3.1: 反向代理詳解
- 3.2: 實驗分析以及結構圖
- 3.3: 具體操作分析
一: ACL訪問控制
1.1: ACL訪問控制概述
-
ACL訪問控制方式
acl 列表名稱 列表類型列表內容...
根據源地址、目標URL、文件類型等定義列表 -
針對已定義的acl列表進行限制
http_access allow或deny 列表名稱... -
ACL規則優先級
一個用戶訪問代理服務器時,Squid會順序匹配Squid中定義的所有規則列表,一旦匹配成功,立即停止匹配
所有規則都不匹配時,Squid會使用與最后一條相反的規則 -
常用的ACL列表類型
src --> 源地址 dst --> 目標地址 port端口 odstdomain -->目標域 time -->訪問時間 maxconn -->最大并發連接 url_regex -->目標URL地址 Urlpath_regex -->整個目標URL路徑 -
最簡單的ACL控制
禁止任何客戶機使用此代理服務
[root@localhost~]# viletclsquid.conf acl all src 0.0.0.0/0.0.0.0 http_access deny all 定義一條名為all的列表,匹配來自任意 源地址的代理訪問;然后拒絕此列表 -
ACL綜合應用1
[root@localhost~]# vi letclsquid.conf ...... acl all src 0.0.0.0/0.0.0.0 acl MYLAN src 192.168.1.0/24 192.168.4.0/24 acl WORKTIMEtime MTWHF 08:30-17:30 http_access allow MYLAN WORKTIME http_access deny all
允許多個局域網段在工作時間上網
1.2: ACL訪問控制實驗
-
做傳統代理,(也可以基于透明代理)
1.解壓squid軟件包 monut.cifs //192.168.1.150/qq-Download /mnt cd /mnt tar xzvf squid-3.4.6.tar.gz -C /opt 2.安裝相關軟件包 yum install gcc gcc-c++ make -y 3.配置服務模塊,編譯安裝 cd /opt/squid-3.4.6/ ./configure \ --prefix=/usr/local/squid \ --sysconfdir=/etc --enable-arp-acl \ --enable-linux-netfilter \ --enable-linux-tproxy \ --enable-async-io=100 \ --enable-err-language="Simplify_Chinese" \ --enable-underscore \ --enable-poll \ --enable-gnuregexmake && make install 4.創建軟鏈接,優化服務控制方式 ln -s /usr/local/squid/sbin/squid /usr/local/sbin/ 5.創建squid用戶 useradd -M -s /sbin/nologin squid 6.修改squid中的var的屬性 chown -R squid.squid /usr/local/squid/var/ 7.編輯squid的配置文件 vim /etc/squid.conf55 # And finally deny all other access to this proxy56 http_access allow all57 http_access deny all //允許所有用戶訪問58 59 # Squid normally listens to port 312860 http_port 3128 61 cache_mem 64 MB //指定緩存功能所使用的內存空間大小62 reply_body_max_size 10 MB //允許用戶下載的最大文件大小63 maximum_object_size 4096 KB //允許保存到緩存空間的最大對象大小64 cache_effective_user squid //添加指定程序用戶65 cache_effective_group squid //添加指定賬戶基本組66 67 # Uncomment and adjust the following to add a disk cache directory.68 #cache_dir ufs /usr/local/squid/var/cache/squid 100 16 2568.編輯防火墻規則 iptables -F //清除所有規則 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT //允許目標端口3128做轉發9.檢查語法并且開啟服務 squid -k parse //檢查配置文件語法 squid -z //初始化緩存目錄 squid //啟動服務 [root@squid ~]# netstat -natp | grep squid tcp6 0 0 :::3128 :::* LISTEN 36414/(squid-1) [root@squid ~]# 10.編輯腳本,優化服務控制方式(service 工具) 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/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在啟動 squid...."echo "成功啟動"$CMDfi;; stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;; status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;; restart)$0 stop &> /dev/nullecho "正在關閉 squid..."echo "關閉成功"$0 start &> /dev/nullecho "正在啟動 squid..."echo "啟動成功";; reload)$CMD -k reconfigure;; check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";; esacchmod +x /etc/init.d/squid //添加服務執行權限 chkconfig --add squid //添加到service的服務列表 chkconfig --level 35 squid on //開機自啟 [root@localhost ~]# service squid restart 正在關閉 squid... 關閉成功 正在啟動 squid... 啟動成功 -
修改squid配置文件
禁止源地址訪問
[root@squid ~]# vim /etc/squid.conf ... # should be allowed acl netlocal src 192.168.100.30 '添加ACL規則' ... # Deny requests to certain unsafe ports http_access deny netlocal '拒絕netlocal列表訪問' [root@squid ~]# service squid reload '重新加載如無' -
禁止訪問目的地址
[root@squid ~]# mkdir /etc/squid [root@squid ~]# vim /etc/squid/denyip.list '創建文件' 192.168.100.150 '添加目的地址,web服務器的地址' [root@squid ~]# vim /etc/squid.conf # should be allowed acl destionhost dst "/etc/squid/denyip.list" '添加絕對路徑'# Deny requests to certain unsafe ports http_access deny destionhost '添加規則' [root@squid ~]# service squid reload取消調用
取消調用后可以訪問web
二: Squid日志分析
-
Sarg(Squid Analysis Report Generator),是一款squid日志分析工具,采用HTML的格式,詳細列出每一位用戶訪問Internet的站點信息、時間占用信息、排名、連接次數、訪問量等
-
在squid代理服務器上配置sarg服務
1.安裝必要軟件包 yum install -y gd gd-devel2.解壓軟件包 tar xzvf sarg-2.3.7.tar.gz -C /opt3.安裝功能模塊,編譯安裝 mkdir /usr/local/sarg //創建安裝目錄 cd /opt/sarg-2.3.7 ./configure \ --prefix=/usr/local/sarg \ --sysconfdir=/etc/sarg \ //配置文件存放位置 --enable-extraprotection //額外的安全防護 make && make install 4.編輯sarg的配置文件 [root@squid ~]# vim /etc/sarg/sarg.conf //開啟以下功能 前面數字位行號 7 access_log /usr/local/squid/var/logs/access.log //指定訪問日志文件 25 title "Squid User Access Reports" //網頁標題 120 output_dir /var/www/html/squid-reports //輸出網頁的目錄 178 user_ip no //是否使用用戶名顯示 184 topuser_sort_field connect reverse //top排序中有連接次數、訪問字節、降序排列 降序為reverse,升序為normal 206 exclude_hosts /usr/local/sarg/noreport //不計入排序的站點列表文件,需要創建 257 overwrite_report no //不覆蓋同名日志 289 mail_utility mailq.postfix //發送郵件報告,命令 434 charset UTF-8 //開啟字符集 517 weekdays 0-6 //按星期周期排序 525 hours 0-23 //按小時周期排序 633 www_document_root /var/www/html //網頁根目錄5.添加不計入站點文件,添加的域名將不被顯示在排序中 touch /usr/local/sarg/noreport6.創建軟鏈接,優化服務控制方式 ln -s /usr/local/sarg/bin/sarg /usr/local/bin7.安裝http服務 yum install httpd -y8.開啟日志分析服務 [root@squid ~]# sarg SARG: 紀錄在文件: 17, reading: 100.00% SARG: 成功的生成報告在 /var/www/html/squid-reports/2020Feb03-2020Feb04 [root@squid ~]# 9.開啟httpd服務,關閉防火墻 [root@squid ~]# systemctl stop firewalld [root@squid ~]# setenforce 0 [root@squid ~]# systemctl start httpd [root@squid ~]# netstat -natp | grep 80 tcp6 0 0 :::80 :::* LISTEN 1631/httpd -
計劃性任務的sarg的日志分析
sarg命令常用選項: -l 指定輸入日志來源 -o 指定輸出目錄 -z 處理信息 -d 指定日期 -
執行周期性計劃任務,每天生成報告
[root@squid squid-reports]# sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y) -
在客戶機訪問,日志報告網頁
日志分割后
三: 反向代理
3.1: 反向代理詳解
-
squid作為代理服務軟件,其主要功能是使用代理上網可以節約緊缺的IP地址資源,而且可以阻斷外部主機對內部主機的訪問,有一定的安全性,但是如果想讓互聯上的主機訪問內部網的主機資源(例如:web站點),又想使內部主機免受外部網主機攻擊,一般的代理服務是不能實現的這就需要反向代理來實現
-
什么是反向代理呢?其實,反向代理也就是通常所說的web服務器加速,它是一種通過在繁忙的WEB服務器和internet之間增加一個高速的web緩沖服務器(即:web反向代理服務器)來降低實際的web服務器的負載
-
下面將對幾種典型的代理服務作一個簡單的比較。在網絡上常見的代理服務器有三種:
1. 標準的代理緩沖服務器(傳統代理)
一個標準的代理緩沖服務被用于緩存靜態的網頁(例如:html文件和圖片文件等)到本地網絡上的一臺主機上(即代理服務器)。當被緩存的頁面被第二次訪問的時候,瀏覽器將直接從本地代理服務器那里獲取請求數據而不再向原web站點請求數據。這樣就節省了寶貴的網絡帶寬,而且提高了訪問速度。但是,要想實現這種方式,必須在每一個內部主機的瀏覽器上明確指明代理服務器的IP地址和端口號??蛻舳松暇W時,每次都把請求送給代理服務器處理,代理服務器根據請求確定是否連接到遠程web服務器獲取數據。如果在本地緩沖區有目標文件,則直接將文件傳給用戶即可。如果沒有的話則先取回文件,先在本地保存一份緩沖,然后將文件發給客戶端瀏覽器。
2. 透明代理緩沖服務器
透明代理緩沖服務和標準代理服務器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理服務器的IP和端口)。透明代理服務器阻斷網絡通信,并且過濾出訪問外部的HTTP(80端口)流量。如果客戶端的請求在本地有緩沖則將緩沖的數據直接發給用戶,如果在本地沒有緩沖則向遠程web服務器發出請求,其余操作和標準的代理服務器完全相同。對于Linux操作系統來說,透明代理使用Iptables或者Ipchains實現。因為不需要對瀏覽器作任何設置,所以,透明代理對于ISP(Internet服務器提供商)特別有用。
3. 反向代理緩沖服務器
反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB服務器的負載。反向代理服務器承擔了對原始WEB服務器的靜態頁面的請求,防止原始服務器過載。它位于本地WEB服務器和Internet之間,處理所有對WEB服務器的請求,阻止了WEB服務器和Internet的直接通信。如果互聯網用戶請求的頁面在代理服務器上有緩沖的話,代理服務器直接將緩沖內容發送給用戶。如果沒有緩沖則先向WEB服務器發出請求,取回數據,本地緩存后再發送給用戶。這種方式通過降低了向WEB服務器的請求數從而降低了WEB服務器的負載。
- 反向代理工作原理
- 當用戶瀏覽器發出一個HTTP請求時,通過域名解析將請求定向到反向代理服務器(如果要實現多個WEB服務器的反向代理,需要將多個WEB服務器的域名都指向反向代理服務器)。由反向代理服務器處理器請求。反向代理一般只緩存可緩沖的數據(比如html網頁和圖片等),而一些CGI腳本程序或者ASP之類的程序不緩存。它根據從WEB服務器返回的HTTP頭標記來緩沖靜態頁面。有四個最重要HTTP頭標記:
Last-Modified: 告訴反向代理頁面什么時間被修改
Expires: 告訴反向代理頁面什么時間應該從緩沖區中刪除
Cache-Control: 告訴反向代理頁面是否應該被緩沖
Pragma: 告訴反向代理頁面是否應該被緩沖.
例如:在默認情況下,ASP頁面返回” Cache-control: private.” ,所以ASP頁面時不會在反向代理服務器緩存的
3.2: 實驗分析以及結構圖
-
類型IP地址系統軟件包 squid代理服務器 ens33:192.168.100.140/24 centos7 squid-3.4.6.tar.gz web服務器1 192.168.100.150/24 centos7 web服務器2 192.168.100.160/24 centos7 客戶機 192.168.100.10/24 centos7
3.3: 具體操作分析
-
配置squid代理服務器
[root@squid squid-reports]# vim /etc/squid.conf http_port 192.168.100.140:80 accel vhost vport '//監控本機80端口' cache_peer 192.168.100.150 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 '//節點服務器1最大訪問30,權重1,別名web1' cache_peer 192.168.100.160 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 '//節點服務器2最大訪問30,權重1,別名web2' cache_peer_domain web1 web2 www.yun.com '//訪問www.yun.com匹配web1,web2節點' [root@squid squid-reports]# service squid restart '//重啟服務' 正在關閉 squid... 正在啟動 squid... [root@squid squid-reports]# netstat -ntap |grep 80 '//查看80端口是否被squid使用' tcp 0 0 192.168.100.140:80 0.0.0.0:* LISTEN 5197/(squid-1) //這里如果httpd的80端口在使用,把httpd停掉,這里用不掉,要先空閑80端口 -
配置web服務器兩個節點相同
[root@web1 ~]# cd /var/www/html [root@web1 html]# vim index.html '//修改首頁內容' <h1>this is web01!</h1> '//web2服務器設置' [root@web2 ~]# yum install httpd -y '//安裝httpd服務' [root@web2 ~]# vim /var/www/html/index.html '//修改首頁內容' <h1>this is web02 web!</h1> //另外一臺Web修改為web01 systemctl stop firewalld.service setenforce 0 systemctl start httpd客戶機環境
-
測試訪問
已經輪詢代理
總結
以上是生活随笔為你收集整理的缓存加速-----Squid-访问控制列表日志分析反向代理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 联合索引 abc_ABC联合
- 下一篇: 幼儿园小班上计算机课 作业内容是手口一致