配置squid 代理

1、什麼是squidcss

     1 squid能夠作代理也能夠作緩存html

      2squid緩存不只能夠節省寶貴的帶寬資源,也能夠大大下降服務器的I/Omysql

      3squid便可以作正向代理也能夠作反向代理linux

       4、正向代理,squid後面是客戶端,客戶端上網要經過squid去上;反向代理後面是服務器,服務器返回給用戶數據的時候須要走squidnginx

       5、正向代理用在企業的辦公環境中,員工上網須要經過squid代理來上網,這樣子能夠節省網絡帶寬資源,而反向代理用來搭建網站靜態項(圖片、html、流媒體、jscss等)的緩存服務器,主要用於網站架構中sql

 

2、搭建squid正向代理後端

1、安裝squid瀏覽器

    yum install -y squid緩存

2、查看squid版本及其編譯參數使用squid -v命令bash

    [root@chenglinux ~]# squid -v

3、清空默認的配置文件

     [root@chenglinux ~]# > /etc/squid/squid.conf

4、將一下模板代碼拷貝到squid.conf文件中去

     模板代碼:

http_port 3128  #正向代理默認的端口是3128
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 8080         # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow all
cache_dir aufs /data/cache 1024 16 256  #本地磁盤上的目錄,這個目錄是須要本身建立,否則沒法啓動,16是定義的cache目錄下的目錄數量
cache_mem 128 MB
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reload
refresh_pattern .               0       20%     4320

退出保存

5、建立緩存目錄cache

     [root@chenglinux ~]# mkdir -p /data/cache

6、更改權限

    [root@chenglinux ~]# chown -R squid /data/cache

7、啓動squid

     須要注意的是在早期的squid版本中須要初始化一下才能夠啓動

     初始化的命令squid -z

   [root@chenglinux ~]# /etc/init.d/squid start

8、檢查一下cache目錄下是否有生成目錄,默認是16

     [root@chenglinux ~]# ls /data/cache/

wKioL1WSgbWja3WTAAD0dguSMsY899.jpg

9、經常使用的命令

  squid -kcheck檢查配置文件是否有錯誤

  squid -k rec 從新加載配置

  service squid restart重啓squid,須要注意的是重啓的時候回很慢,能夠直接先killall squid而後在重啓

10、測試

[root@mysql ~]# curl -x192.168.21.99:3128 www.baidu.com

 若是看到一大串的東西,就說明正向代理已經成功

 

測試緩存

[root@mysql ~]# curl -x192.168.21.99:3128 https://s3.51cto.com/wyfs02/M02/5B/D5/wKiom1UTub-T8AQUAABa6PsQTa4459_middle.jpg -I

看一下兩圖的區別

wKiom1WSgE6ClbKcAAM2C7NGwB0631.jpg

wKiom1WSgFbD0ZUFAAMURzLf7T8597.jpg

第一張圖多了MISS

 

3、設置黑白名單

         白名單

        要求:容許訪問網易12651cto,其餘的拒絕

       1、在/etc/squid/squid.conf配置文件中的acl CONNECT method CONNECT下添加一下代碼:

        acl http proto HTTP

        acl good_domain dstdomain .baidu.com .qq.com           

        http_access allow http good_domain

        http_access deny http !good_domain

      如圖:

wKioL1WSglazoYTMAART88ag-7Q472.jpg

退出保存

二、重置squid服務

 [root@chenglinux ~]# squid -k rec


三、測試   

   1)訪問126

[root@mysql ~]# curl -x192.168.21.99:3128 http://ww.126.com -I
HTTP/1.0 200 OK
Date: Tue, 30 Jun 2015 08:45:49 GMT
Expires: Tue, 30 Jun 2015 09:45:49 GMT
Server: nginx
Content-Type: text/html
Content-Length: 95122
Last-Modified: Mon, 18 May 2015 07:29:49 GMT
Cache-Control: max-age=3600
Accept-Ranges: bytes
X-Via: 1.1 zhenjiang167:8109 (Cdn Cache Server V2.0), 1.1 ly17:7 (Cdn Cache Server V2.0)
Age: 187
X-Cache: HIT from chenglinux
X-Cache-Lookup: HIT from chenglinux:3128
Via: 1.0 chenglinux (squid/3.1.10)
Connection: keep-alive


2)訪問百度

[root@mysql ~]# curl -x192.168.21.99:3128 http://ww.baidu.com -I
HTTP/1.0 403 Forbidden  #提示被禁止的
Server: squid/3.1.10
Mime-Version: 1.0
Date: Mon, 29 Jun 2015 17:37:27 GMT
Content-Type: text/html
Content-Length: 3264
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from chenglinux
X-Cache-Lookup: NONE from chenglinux:3128
Via: 1.0 chenglinux (squid/3.1.10)
Connection: keep-alive


黑名單

一、要求:不容許訪問網易12六、51cto,其餘的容許

二、 在/etc/squid/squid.conf配置文件中的acl CONNECT method CONNECT下添加一下代碼:

      

acl http proto HTTP

acl bad_domain dstdomain .126.com .51cto.com

http_access deny http bad_domain

http_access allow http !bad_domain  #其實把這同樣註釋掉也能夠


檢查配置文件

重置配置文件


三、測試

  1)訪問51CTO

[root@mysql ~]# curl -x192.168.21.99:3128 http://ww.51cto.com -I
HTTP/1.0 403 Forbidden #提示決絕
Server: squid/3.1.10
Mime-Version: 1.0
Date: Mon, 29 Jun 2015 17:43:25 GMT
Content-Type: text/html
Content-Length: 3264
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from chenglinux
X-Cache-Lookup: NONE from chenglinux:3128
Via: 1.0 chenglinux (squid/3.1.10)
Connection: keep-alive

  

2)訪問jd.comOK

[root@mysql ~]# curl -x192.168.21.99:3128 www.jd.com -I
HTTP/1.0 200 OK 
Server: JDWS
Date: Tue, 30 Jun 2015 08:57:43 GMT
Content-Type: text/html; charset=gbk
Vary: Accept-Encoding
Expires: Tue, 30 Jun 2015 08:58:12 GMT
Cache-Control: max-age=120
Age: 24
Content-Length: 160864
X-Cache: MISS from chenglinux
X-Cache-Lookup: MISS from chenglinux:3128
Via: BJ-M-YZ-NX-80(HIT), http/1.1 WH-CT-1-JCS-105 ( [cRs f ]), 1.0 chenglinux (squid/3.1.10)
Connection: keep-alive

IE瀏覽器設置代理設置,具體如圖:

wKioL1WSgu-gEX3ZAAb7Ks_4oL4398.jpg

4)在瀏覽器測試51CTO提示訪問被拒絕

wKioL1WSgy-zDg1VAAIyFujNp0s654.jpg

4、反向代理

    1、修改端口

         把以前的http_port 3128修改成:

         http_port 80  accel vhost vport

    2、在剛纔的80端口下面添加一下代碼:

 

cache_peer 123.125.119.147 parent 80 0 originserver name=a #這裏是固定的寫法,a表示的是代理的一個域名的簡寫

cache_peer_domain a www.qq.com   #上面的IP地址就是這裏域名的IP地址

cache_peer 61.135.169.125 parent 80 0 originserver name=b

cache_peer_domain b www.baidu.com

退出保存

配置文件解釋:

cache_peer爲配置後端的服務器及IP端口

name爲後面要配置的域名,和cache_peer_domain相對應

 

  3、檢查配置文件

[root@chenglinux ~]# squid -kcheck

 

        重置配置文件

[root@chenglinux ~]# squid -k rec

 

 4、在瀏覽器中測試

     須要修改的就是在瀏覽器中把3128端口要改爲80端口

1)訪問126.com被拒絕

wKiom1WSgeuQ8aWsAAJgFIMULr0612.jpg

2)訪問baidu

wKioL1WSg7rwqMG2AAFMRcMTGlo008.jpg


5、若是要代理一臺主機上的全部域名,須要寫成這樣:

     cache_peer 192.168.10.111 80 0 originserver

     後面也不須要寫cache_peer_domain

 


           筆記有錯誤的地方還請大神指正,小白會繼續修改 

相關文章
相關標籤/搜索