代理服務squid和varnish使用與區別

-------------------------------

客戶主機: 192.168.4.100  eth0

-------------------------------

代理主機: 192.168.4.5    eth0

         192.168.2.5     eth1

--------------------------------

Web主機:  192.168.2.100  eth1

--------------------------------

#clone-vm   軟件[google]

#配置yum     

----------------------------------------------------------------------------------

squid代理轉發    基於硬盤代理轉發 /var/spool/squid                     


正向代理你上不了網我幫你訪問web[我帶表你]

反向代理你訪問我就等同於訪問web【我帶表web】


正向轉發

1

代理主機

#yum -y install squid   紅帽的包yum 源

#vim  /etc/squid/squid.conf

59:http_access allow all    訪問控制允許用代理

61:visible_hostname abc    主機名隨便

62:http_port 3128        端口號記住

66:cache_dir ufs /var/spool/squid 100 16 256

緩存,緩存目錄爲/var/spool/squid

    緩存大小爲100M 工作上很定小了

    一級目錄爲16個二級目錄256個

#service squid start

#ls /var/spool/squid squid 是存緩存的地方

2

Web主機

#yum -y install httpd

#echo "test" > /var/www/html/index.html

#service httpd start

3

客戶端驗證

#curl http://192.168.2.100  失敗

#curl --proxy1.0 192.168.4.5:3128 http://192.168.2.100/ 測試成功--proxy1.0先走代理

但是生活中一般不用這命令測試用瀏覽器設置代理。設置完後從此以後

不管在地址欄中輸入什麼google,baidu都是交給代理處理再轉發回來.

在圖形界面設置代理轉發 實現翻強技術

firefox-->alt鍵---編輯--首選項---高級---網絡--設置--》代理IP和端口

IE瀏覽器----internet選項---連接---局域網設置---IP 端口


代理翻強

 免費 找代理ip 端口

 收費

 下代理軟件自動找

-------------------------------------------------------------------------------------------

在代理服務器上查看日誌

#tailf /var/log/squid/access.log

按enter到最後......

在web服務器上查看日誌

#tailf /var/log/httpd/access_log

到最後.......


查看緩存目錄一般從前往後用。

cd /var/spool/squid/

[root@proxe ~]# cd /var/spool/squid/

[root@proxe squid]# ls

00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F  swap.state

[root@proxe squid]# cd 00

[root@proxe 00]# ls

00  0D  1A  27  34  41  4E  5B  68  75  82  8F  9C  A9  B6  C3  D

...........

[root@proxe 00]# cd 00

[root@proxe 00]# ls

00000001

[root@proxe 00]# cat 00000001 

foI}dv0 ,9BX9BX)BX`http://192.168.2.100/HTTP/1.1 200 OK

Date: Fri, 17 Feb 2017 18:34:33 GMT

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Fri, 17 Feb 2017 18:34:17 GMT

ETag: "1a0112-2-548be294a890b"

Accept-Ranges: bytes

Content-Length: 2

Connection: close

Content-Type: text/html; charset=UTF-8

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

squid 反向代理 公司都是運用反向代理開展業務個人使用一般都是正向代理滿足自己需要


反向代理公司都要結合DNS使用因爲客戶訪問是用域名   [網站]DNS  這裏因爲實驗關係單一實驗沒做DNS

1.代理設置:

#vim /etc/squid/squid.conf

62:http_port 80 vhost

63:cache_peer 192.168.2.100 parent

 80 0 originserver

#service squid restart

squid反向代理端口號也是80起服務時需要把別的80端口關了以防衝突。


客戶端驗證

#curl http://192.168.2.100 失敗

#curl http://192.168.4.5  成功 不需要再設置代理 直接訪問4.5就帶表192.168.2.100因爲反向代理配置文件指了parent


(-I抓包 可以看到打開的頁面是HIT 還是MISS實際生活中都希望是HIT因爲是緩存速度快

[root@host ~]# curl -I  http://192.168.4.5

HTTP/1.0 200 OK

Date: Fri, 17 Feb 2017 19:21:08 GMT

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Fri, 17 Feb 2017 18:34:17 GMT

ETag: "1a0112-2-548be294a890b"

Accept-Ranges: bytes

Content-Length: 2

Content-Type: text/html; charset=UTF-8

Age: 319

X-Cache: HIT from abc

X-Cache-Lookup: HIT from abc:80

Via: 1.0 abc (squid/3.1.23)

Connection: keep-alive


[root@host ~]# curl -I  http://192.168.4.5/1.html   

HTTP/1.0 200 OK

.........................

X-Cache: MISS from abc

X-Cache-Lookup: MISS from abc:80

Via: 1.0 abc (squid/3.1.23)

Connection: keep-alive

++++++++++++++++++++++++++++++++++++++++++++++++++++++

網絡    

CDN   代理+DNS

baidu  google   yahoo

++++++++++++++++++++++++++++++++++++++++


Squid訪問控制ACL允許誰訪問不允許誰訪問實際中公司一般做網站出來就是給客戶用一般不做拒絕使用但如果真有如人***我一般也不是用ACL用防火強因爲linux防火牆是基於內核的而ACL是應用層的防火牆直接對網卡操作處理速度快的多


7層

業務   高功能強 性能低 如軟件金山軟件的防火強7層

業務   低 功能弱  性能高如iptables對網卡操作相當物理層

windows適合裝應用層軟件防火牆  linux適合低層防火牆


Squid訪問控制ACL

先定義ACL

調用ACL


定義

acl  名稱  類型   內容

acl  abc   time  17:00-18:00

acl  qq    src   192.168.4.100

acl  qq2   src   192.168.4.0/24

調用

http_access allow|deny 名稱


http_access deny  abc 拒絕17-18使用代理

http_access allow qq     允許192.168.4.100使用代理這樣就生效放在下面不生效

http_access deny qq2   拒絕192.168.4.0/2417-18使用代理



#vim /etc/squid/squid.conf

acl myip  src 192.168.4.254

http_access deny myip 拒絕這個ip使用代理


acl mytime time MTWHF 00:00-18:00

http_access deny mytime  拒絕所有在這個時間段使用代理



栗子

acl myip src 192.168.4.5

acl ip2  src 192.168.4.10

acl mynet src 192.168.4.0/24

acl mytime time MTWHF 09:00-18:00


http_access allow  mynet  mytime可以理解成該網段工作時間應許

http_access allow  myip 4.5Boss所有時間都允許這條放上面和這都有效

http_access deny all其他的都不應許



acl aaa src 192.168.2.0/24 192.168.3.0/24 (l兩個寫在一起

acl work time  MTWHF 09:30-18:30

acl ip src 192.168.4.5

http_access allow ip   4.5Boss所有時間都允許)

http_access allow aaa work (允許這兩個網段在這個工作時間使用代理)

http_access deny all


acl black dst  "/root/file.list"   (可以把數據,限制的ip提前寫在文件中使用寫這個文件就可以) 

http_access deny black (拒絕這裏面的ip使用代理)

未設置任何規則時拒絕所有訪問請求

已設置規則時依次進行檢查找到匹配即停止否則採用與最後一條規則相反的權限  工作是不要出現下面這種情況

+++++++++++++++++++++++++++++++

acl abc   src 1.1.1.1

http_access allow  abc

1.1.1.2(拒絕)

1.1.1.3(拒絕)

+++++++++++++++++++++++++++++++

acl abc   src 1.1.1.1

http_access deny  abc

1.1.1.2應許

1.1.1.3允許

+++++++++++++++++++++++++++++++

一般最後一條寫了這個http_access allow/deny all否則採用與最後一條規則相反的權限這句話就無效。

++++++++++++++++++++++++++++++++

ACL 列表

src   源ip

dst   目標ip 

port   目標端口

dstdomain  目標域

time   訪問時間

maxconn    最大併發連接數  (acl abc  maxconn 30      http_access aalow abc)允許同時最大30個人併發使用代理第三十一使用需要排隊

url_regex     目標URL地址

urlpath_regex  整個目標URL路徑

--------

http://www.baidu.cm/sex

http://www.baidu.com/mp4


acl  abc  url_regex  .*\.(mp4|flv|mov|avi) 讓員工不使用代理看電影等這幾種格式包含劉大概95%的電影

http_accss allow 192.168.4.5 (允許boss4.5看

http_access deny  abc    拒絕任何人看

---------------------------------------------------------------------------------------

(ping 走的是tcp icmp)

+++++++++++++++++++++++++++++++

Varnish[只做反向代理,緩存基於內存] 

它要在官網上下載 源碼包安裝  squid光盤中就有

varish和squid相比 一個只做反向一個正反都做一個基於內存一個基於硬盤一個效率快一個效率慢各有優缺點。



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

varish 源碼包安裝

1.安裝

在官網下載軟件包保存在本地。(裝varish源碼包需要先裝依賴包readlin-devel和pcre-devel光盤中一般有。具體的裝源碼包可以參考官網看./configure附近的內容就可以。)

yum -y install readline-devel pcre-devel    

useradd -s /sbin/nologin  varnish (創建一個普通用戶目的是用普通用戶啓動不用root好處是萬一有人把你攻破了它也只有這個普通用戶的varnish服務這個權限對於保護系統更安全。這步可以根據情況來 再操作)

tar -xzf varnish-3.0.6.tar.gz

cd  varnish-3.0.6

./configure --prefix=/usr/local/varnish (指定保存的位置這是默認地址)

make

make install


【【varnish有兩個配置文件

1.定義前端port,進程用戶

2.定義後端誰是你的後臺服務器


/usr/local/varnish   下載的主程序保存位置

etc bin  sbin   

...etc/varnish/default.vcl   後臺配置文件   

....bin/    程序和日誌文件

....sbin/varnishd 管理員主程序起服務起它】】


2起服務前複製需要的文件

cp  redhat/varnish.initrc   /etc/init.d/varnishd  (當前varnish-3.0.6) 拷貝啓動腳本這個腳本目的是用它啓動關閉/usr/local/varnish/sbin/varnishd這個服務的程序這個腳本本來就有不需要自己寫。

cp  redhat/varnish.sysconfig  /etc/sysconfig/varnish定義全端配置文件

cp redhat/varnish_reload_vcl  /usr/bin

mkdir /etc/varnish

cp /usr/local/varnish/etc/varnish/default.vcl   /etc/varnish/default.vcl(後臺配置文件的路徑放在這因爲前前臺配置文件中有指需要一致)

ln -s  /usr/local/varnish/sbin/varnishd/  /usr/sbin/ 服務啓動程序

ln -s /usr/local/varnish/bin/*  /usr/bin  (日誌文件做哥鏈接方便後面使用)

3.改配置文件然後重起服務就行


+++++++++++++++++++++++++++++++++++++++++++++++++++++++

QQ程序

雙擊QQ打開的是一個進程

QQ和多人聊天是多個線程


shell 腳本中只有多進程沒有多線程

for i in {1..100}

do 

ping $i &

done

++++++++++++++++++++++++++++++++++++++++++++++++++++


課上實驗教簡單已經寫好安裝腳本

#tar -xf lnmp_soft-2016-8-9.tar.gz

#cd lnmp_soft

#install_lnmp.sh  選擇7

/usr/local/varnish  主程序

/etc/init.d/varnish  腳本

/etc/sysconfig/varnish  配置文件


配置文件

主配置文件(定義前端配置)

#vim /etc/sysconfig/varnish

60:VARNISH_VCL_CONF=/etc/varnish/default.vcl

66:ARNISH_LISTEN_PORT=80  端口號

69 VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1  ()

 70 VARNISH_ADMIN_LISTEN_PORT=6082(這個端口號記住就行不需要改動root用戶刷新頁面使用)

76:VARNISH_MIN_THREADS=50最小線程數

79:VARNISH_MAX_THREADS=1000 最大 工作中很定小但開多也吃資源要有一個合適的線程

89:VARNISH_STORAGE_SIZE=64M 緩存大小實際根情況來定

92:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"

使用內存緩存頁面內存大小爲64M



主配置文件(定義後臺服務器)

#vim /etc/varnish/default.vcl

backend default {

     .host = "192.168.2.100";

     .port = "80";

 }

密碼文件

#uuidgen > /etc/varnish/secret

(開啓服務使用80端口)

#service  squid  stop

#service  varnish start


1.修改web頁面

#echo "ccc" > /var/www/html/b.html


2.客戶端訪問代理(獲取舊的頁面內容)

[root@host ~]# curl   http://192.168.4.5/b.html

ccc

_____________________________________

web端:

[root@web ~]# echo "hello" >/var/www/html/b.html

host端:

[root@host ~]# curl   http://192.168.4.5/b.html

hello

web端:

[root@web ~]# echo "cccc" >/var/www/html/b.html

host端:

[root@host ~]# curl   http://192.168.4.5/b.html

hhhh

  主要原因是有緩存一般系統會隔幾分鐘自動刷新下對於一般業務沒什麼影響如果有特殊需求需要立即顯示可在代理服務端打一個命令立即刷新

代理服務端

[root@proxe bin]# varnishadm -T 127.0.0.1:6082 -S  /etc/varnish/secret ban.url b.html

host端:

[root@host ~]# curl   http://192.168.4.5/b.html

cccc

++++++++++++++++++++++++++++++++++++++++++++++++++++

查看varnish日誌:

在/usr/local/varnish/bin下  varnishlog   和varnishncsa都是這個服務器的日誌。

先做鏈接ln -s /usr/local/varnish/bin/*  /usr/bin/

 

[root@proxe bin]# ln -s /usr/local/varnish/bin/*   /usr/bin

[root@proxe bin]# varnishlog


    0 CLI          - Rd ping

    0 CLI          - Wr 200 19 PONG 1487379369 1.0


[root@proxe bin]# varnishncsa  也可保存在文件中看



[root@proxe bin]# varnishlog -w file.sh  加-w參數 把這個日誌內容保存在文件中再帶開看



[root@proxe bin]# ls

file.sh     varnishhist  varnishncsa    varnishsizes  varnishtest

varnishadm  varnishlog   varnishreplay  varnishstat   varnishtop

[root@proxe bin]# cat file.sh 

Rd pingWr 200 19 PONG 1487379405 1.0Rd pingWr 200 19 PONG 1487379408 1.0Rd pingWr 200 19 PONG 1487379411 1.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章