代理服务squid和varnish使用与区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代理服务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/

[[email protected] ~]# cd /var/spool/squid/

[[email protected] squid]# ls

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

[[email protected]oxe squid]# cd 00

[[email protected] 00]# ls

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

...........

[[email protected] 00]# cd 00

[[email protected] 00]# ls

00000001

[[email protected] 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因为是缓存速度快

[[email protected] ~]# 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


[[email protected] ~]# 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.客户端访问代理(获取旧的页面内容)

[[email protected] ~]# curl   http://192.168.4.5/b.html

ccc

_____________________________________

web端:

[[email protected] ~]# echo "hello" >/var/www/html/b.html

host端:

[[email protected] ~]# curl   http://192.168.4.5/b.html

hello

web端:

[[email protected] ~]# echo "cccc" >/var/www/html/b.html

host端:

[[email protected] ~]# curl   http://192.168.4.5/b.html

hhhh

  主要原因是有缓存一般系统会隔几分钟自动刷新下对于一般业务没什么影响如果有特殊需求需要立即显示可在代理服务端打一个命令立即刷新

代理服务端

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

host端:

[[email protected] ~]# curl   http://192.168.4.5/b.html

cccc

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

查看varnish日志:

在/usr/local/varnish/bin下  varnishlog   和varnishncsa都是这个服务器的日志。

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

 

[[email protected] bin]# ln -s /usr/local/varnish/bin/*   /usr/bin

[[email protected] bin]# varnishlog


    0 CLI          - Rd ping

    0 CLI          - Wr 200 19 PONG 1487379369 1.0


[[email protected] bin]# varnishncsa  也可保存在文件中看



[[email protected] bin]# varnishlog -w file.sh  加-w参数 把这个日志内容保存在文件中再带开看



[[email protected] bin]# ls

file.sh     varnishhist  varnishncsa    varnishsizes  varnishtest

varnishadm  varnishlog   varnishreplay  varnishstat   varnishtop

[[email protected] 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.



本文出自 “12336621” 博客,请务必保留此出处http://12346621.blog.51cto.com/12336621/1899653

以上是关于代理服务squid和varnish使用与区别的主要内容,如果未能解决你的问题,请参考以下文章

varnish和squid的对比

基于Centos 7 部署Varnish缓存代理服务器

Varnish缓存代理简介与配置

Squid 和 Varnish 代理服务器的简单搭建

varnish缓存代理

varnish---反向代理web加速缓存服务器和CDN的推送