Linux搭建HTTP代理服务器
代理服务器(Proxy Server):
正向代理 --- 客户端程序(如浏览器)用制定代理服务器的地址:端口
反向代理 --- 负载均衡,反向代理工作机制 与传统代理方向相反 代理公网用户访问组织内部的web服务器:
Linux平台下常用的两个软件:
Squid:
squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求,squid 可做正向和反向代理 //缓存为硬盘存储,
Varnish:
Varnish是一款高性能的开源d反向代理服务器和HTTP加速器,挪威最大的在线报纸Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。
与传统的squid相比,varnish具有性能更高,速度更快,并发量更大,管理方便等诸多优点。
varnish 只能做反向代理服务器 //缓存为内存存储
废话不多说………直接上货
今天先讲一下varnish的安装与配置,以CentOS6.7为例。
准备环境
代理服务器 192.168.4.5 搭建 varnish
Web服务器 192.168.2.100 搭建http
Client测试机 192.168.4.100 测试用
-
源码编译安装varnish,安装前需要先安装 gcc、readline-devel、pcre-devel 等依赖包。这三个包在Centos6.7的光盘里有,可以直接采用本地yum源安装,gcc 是用来编译编译源码包的,
yum –y install gcc readline-devel pcre-devel //安装gcc等依赖包
wget-c http://repo.varnish-cache.org/source/varnish-3.0.1.tar.gz //下载varnish源码包
这个是3.0.1版本的,最新版有3.0.4.有需要的自己google
tar xf varnish-3.0.1.tar.gz // tar -xf 解包
useradd -s/sbin/nologin varnish //创建varnish用户,指定shell为/sbin/nologin/ 不让varnish登录Linux系统
./configure --prefix=usr/local/varnish //配置----指定安装目录
make &&make install //编译安装
到这里varnish安装就完成了,但是还不能直接起服务。
拷贝配置文件
cpredhat/varnish.initrc /etc/init.d/varnish
//拷贝varnish.initrc到init.d/目录
cpredhat/varnish.sysconfig /etc/sysconfig/varnish
//拷贝varnish.sysconfig到/etc/sysconfig/目录
cpredhat/varnish_reload_vcl /usr/bin/
//拷贝 varnish_reload_vcl到/usr/bin/目录
ln -s/usr/local/varnish/sbin/varnishd /usr/sbin/
//创建链接 到/usr/sbin/
配置文件:
主配置文件(定义前端配置)
#vim/etc/sysconfig/varnish
66:ARNISH_LISTEN_PORT=80端口
76:VARNISH_MIN_THREADS=50最小线程数
79:VARNISH_MAX_THREADS=1000最大线程数
89:VARNISH_STORAGE_SIZE=64M缓存大小 //根据自己的实际需求更改
我的内存一个G的所有只给他64M。
92:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
使用内存缓存页面,内存大小为64M
73:VARNISH_SECRET_FILE=/etc/varnish/secret
定义密码文件的路径
mkdir/etc/varnish
cp/usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
拷贝 default.vcl 到 /etc/varnish/目录
主配置文件(定义后台服务器)
#vim/etc/varnish/default.vcl
backend default{
.host = "192.168.2.100"; //web服务的IP
.port = "80"; //web的端口
}
把这几行前面的注释(#)去掉,修改一下.hsot= 是你要代理缓存的web服务器
.port是端口,默认为80,
密码文件
#uuidgen >/etc/varnish/secret
//生成uuid作为密码,secret文件事先是不存在的
到这里已经配置完毕了,
#service varnish start //启动服务
然后测试
用测试机在浏览器里输入192.168.4.5,看能否访问到web上的页面
Web是在192.168.2.100上的。
管理varnish的缓存内容
1.客户端访问代理(获取旧的页面内容)
2.代理(链接/usr/local/varnish/bin)
#varnishadm -T127.0.0.1:6082 -S /etc/varnish/secret
ban.url index.html //刷新缓存
也可以用varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url.* 刷行缓存