說明:
當客戶機經過代理來請求web頁面時,指定的代理服務器會先檢查本身的緩存,若是緩存中已經有客戶機須要訪問的頁面(紅色1 2 3 4),則直接將緩存中的頁面內容反饋給客戶機;若是緩存中沒有客戶機須要訪問的頁面(藍色1 2 3 4),則由代理服務器向Internet發送訪問請求,當得到返回的web頁面之後,將網頁數據保存到緩存中併發送給客戶機。使用傳統代理的特色在於,客戶機的相關程序必須指定代理服務器的地址、端口等基本信息。下面進行傳統代理服務器的構建。
.
.
壓縮文件包
連接: https://pan.baidu.com/s/1GmD1SCoYeWYFi9W1BG_Z-Q 提取碼: kkcn
.
.
拓撲圖以下:
.
.
實驗環境:
.
.
1、編譯安裝squid
.
1 . 將壓縮包掛載、解壓到服務器中,安裝編譯環境linux
mkdir /ooo/ #建立掛載目錄 mount.cifs //192.168.201.1/gx /ooo/ #掛載壓縮包 cd /ooo/ tar zxvf squid-3.5.23.tar.gz -C /opt/ #解壓到/opt/ yum install gcc gcc-c++ make -y #安裝編譯環境
.
.
2 .手工編譯安裝c++
./configure --prefix=/usr/local/squid \ #指定安裝路徑 --sysconfdir=/etc \ #配置文件路徑 --enable-arp-acl \ #mack地址 --enable-linux-netfilter \ #內核過濾 --enable-linux-tproxy \ #透明模式 --enable-async-io=100 \ #io優化 --enable-err-language="Simplify_Chinese" \ #報錯顯示 --enable-underscore \ #容許有下劃鍵 --enable-poll \ #提高 --enable-gnuregex #支持正則表達式 make && make install
.
.
3 . 安裝完後,建立連接文件,用戶和組web
ln -s /usr/local/squid/sbin/* /usr/local/sbin/ #將命令放入系統識別路徑下 useradd -M -s /sbin/nologin squid #建立一個用戶 chown -R squid.squid /usr/local/squid/var/ #更改目錄權限
.
.
4 . 修改squid配置文件,初始化緩存目錄,啓動服務,完成安裝正則表達式
vim /etc/squid.conf # And finally deny all other access to this proxy http_access allow all #容許全部 http_access deny all # Squid normally listens to port 3128 http_port 3128 cache_effective_user squid #添加 指定程序用戶 cache_effective_group squid #添加 指定帳號基本組 squid -z #緩存目錄初始化 squid #啓動服務
.
.
5 .編寫啓動腳本vim
cd /etc/init.d vim 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
.
.
6 . 添加權限,名稱,檢查語法瀏覽器
chmod +x squid #添加執行權限 chkconfig --add squid #添加名稱,便於識別 service squid check #檢查語法
.
.
2、設置傳統代理服務器
.
1 . squid服務器的配置緩存
vim /etc/squid.conf ....... http_port 3128 cache_mem 64 MB #指定緩存功能所使用的內存空間大小,便於保持訪問較頻繁的WEB對象,容量最好爲4的倍數,單位爲MB,建議設爲物理內存的1/4 reply_body_max_size 10 MB #容許用戶下載的最大文件大小,以字節爲單位。默認設置0表示不進行限制 maximum_object_size 4096 KB #容許保存到緩存空間的最大對象大小,以KB爲單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶
.
.
2 . 重啓服務,清空防火牆bash
service squid restart #重啓服務 iptables -F #清空防火牆 setenforce 0 #關閉加強功能 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT #在input鏈中,針對tcp協議,目標端口3128,容許轉發
傳統代理完成
.
.
3、測試傳統代理
.
1 . 開啓測試端網頁服務器
systemctl stop firewalld.service setenforce 0 #關閉防火牆 yum install httpd -y #安裝http systemctl start httpd #開啓服務
.
.
2 .win7端網絡設置爲NAT模式,用瀏覽器訪問192.168.201.130
.
.
3 .網頁端查看訪問日誌網絡
cd /etc/httpd/logs/ vim access_log #查看訪問日誌
能夠看到來訪客戶端ip地址
.
.
4 . 此時設置代理訪問
打開瀏覽器-->工具-->intenet選項
.
.
鏈接-->局域網設置
.
.
設置ip地址與端口
.
.
此時再用瀏覽器訪問192.168.201.130,查看來訪日誌
能夠看到,訪問ip是代理服務器的ip地址,傳統代理服務器測試成功