1、什麼是squidcss
1、 squid能夠作代理也能夠作緩存html
2、squid緩存不只能夠節省寶貴的帶寬資源,也能夠大大下降服務器的I/Omysql
3、squid便可以作正向代理也能夠作反向代理linux
4、正向代理,squid後面是客戶端,客戶端上網要經過squid去上;反向代理後面是服務器,服務器返回給用戶數據的時候須要走squidnginx
5、正向代理用在企業的辦公環境中,員工上網須要經過squid代理來上網,這樣子能夠節省網絡帶寬資源,而反向代理用來搭建網站靜態項(圖片、html、流媒體、js、css等)的緩存服務器,主要用於網站架構中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/
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
看一下兩圖的區別
第一張圖多了MISS
3、設置黑白名單
白名單
要求:容許訪問網易126、51cto,其餘的拒絕
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
如圖:
退出保存
二、重置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瀏覽器設置代理設置,具體如圖:
4)在瀏覽器測試51CTO提示訪問被拒絕
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被拒絕
2)訪問baidu
5、若是要代理一臺主機上的全部域名,須要寫成這樣:
cache_peer 192.168.10.111 80 0 originserver
後面也不須要寫cache_peer_domain了
筆記有錯誤的地方還請大神指正,小白會繼續修改