squid
工作流程
a、代理服務器來接受客戶端t上的連接請求
b、代理服務器檢查自己的數據緩存
c、如果自己的緩存里有客戶端請求的數據
d、代理服務器從緩存中取出數據,返回給客戶端
e、如果自己的緩存里沒有客戶端請求的數據
f、代理服務器向Internet 上的遠端服務器發送數據請求
g、遠端服務器響應,返回相應的數據
h、代理服務器取得遠端服務器的數據,返回給客戶端,並保留一份到自己的數據緩存中。
squid分類
按照代理類型的不同,可以將Squid代理分為正向代理和反向代理。
正向代理:意思是一個位於客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求並指定目標(原始服務器),然后代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。
根據實現方式的不同,又可以分為普通代理和透明代理:
a、普通代理:需要客戶機在瀏覽器中指定代理服務器的地址、端口;
b、透明代理:適用於企業的網關主機(共享接入Internet)中,客戶機不需要指定代理服務器地址、端口等信息,代理服務器需要設置防火牆策略將客戶機的Web訪問數據轉交給代理服務程序處理;
反向代理:是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。
這里我用squid做web的代理緩存服務器
主機 |
ip地址 |
client |
eth0(192.168.4.10) |
proxy |
eth0(192.168.4.11) eth1(192.168.2.11) |
web |
eth1(192.168.2.10) |
web服務器
1)使用yum安裝web軟件包
[root@web ~]# yum -y install httpd
2)啟用httpd服務,並設為開機自動運行
[root@web ~]# echo "web" >/var/www/html/index.html
httpd服務默認通過TCP 80端口監聽客戶端請求:
[root@web ~]# netstat -anptu | grep 80 tcp6 0 0 :::80 :::* LISTEN 18610/httpd
代理服務器proxy
1)使用yum安裝squid軟件包:
[root@proxy ~]# yum -y install squid.x86_64
2)修改/etc/squid/squid.conf配置文件:
http_port 80 vhost #設置監聽的IP與端口號
visible_hostname proxy.com #主機名
cache_peer 192.168.2.10 parent 80 0 originserver #定義后端真實服務器信息
cache_dir ufs /var/spool/squid 100 16 256 #定義squid的cache存放路徑 、cache目錄容量(單位M)、一級緩存目錄數量、二級緩存目錄數量 http_access allow all #允許本機所有主機使用代理服務器
3)啟動squid服務,並設置為開機啟動:
[root@proxy ~]# systemctl restart squid.service
[root@proxy ~]# systemctl enable squid.service
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.
4)squid服務通過TCP 80端口監聽客戶端請求:
[root@proxy ~]# netstat -anptu | grep 80 tcp6 0 0 :::80 :::* LISTEN 18883/(squid-1)
客戶端開啟瀏覽器訪問
[root@client ~]# curl http://192.168.4.11 #訪問代理服務器,代理服務器會返回web服務器的內容 web
做配置之前需要報selinx和防火牆關掉