您的位置:首页 > 运维架构 > 反向代理

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

2017-02-20 22:22 459 查看
-------------------------------
客户主机: 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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代理服务