服务器迁移---squid反向代理
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://liuyu.blog.51cto.com/183345/66507 |
前言:
公司服务器需要进行迁移,从A机柜到B机柜,二机柜之间的距离为10米。哈哈。好近,尽管很近,但IP段不一样。 因此web,dns,mail,mysql 都得切换~ 在这里呢,先写一些切换前的准备工作,squid 反向代理就是其中之一 特别感谢IORI,明的指点!!!感谢党,感谢人民,感谢51CTO,感谢你们~
一.反向代理的概念
什么是反向代理呢?其实,反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的 WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载。典型的结构如下图所示:
(这也是反向代理名称的由来)。实施反向代理(如上图所示),只要将Reverse Proxy Cache设备放置在一台或多台Web服务器前端即可。当
互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时
Reverse Proxy Server设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被卸载到反向代理
服务上。不但能够防止外部网主机直接和web服务器直接通信带来的安全隐患,而且能够很大程度上减轻web服务器的负担,提高访问速度。
二.反向代理工作原理
反向代理服务器位于本地WEB服务器和Internet之间,如下图所示: 服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html网页和图片等),而一
些CGI脚本程序或者ASP之类的程序不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面。
以上来自互联网
三.squid做反向代理
1.安装
注:如果系统是redhat 9,需要安装epoll的库文件(epoll有效的降低系统的I/0瓶颈,资源占用率) wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE2.tar.gz 为了安全起见,建立squid运行的用户及组 useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin tar zxvf squid-3.0.STABLE2.tar.gz cd squid-3.0.STABLE2 ./configure --prefix=/usr/local/squid3 --disable-carp --with-aufs-threads=32 --with-pthreads --enable-storeio='ufs,aufs,coss,null' --enable-disk-io='AIO,Blocking' --enable-removal-policies='heap,lru' --disable-wccp --enable-kill-parent-hack --disable-snmp --disable-poll --disable-select --enable-auth=basic --with-aio --disable-ident-lookup --with-filedescriptors=65536 编译参数:
--prefix=/usr/local/squid3 :指定安装路径 为便于管理 --enable-poll :提升性能 --enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid 支持SNMP接口。 --enable-storeio=ufs,null #使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理 服务器,就需要加上null文件系统。 其它的参数等待大家来解释。HOHO ~ make;make install
安装完毕。 2.配置
注意:squid 的配置文件在:/usr/local/squid3/etc/squid.conf
这里是最重要的,也是最难的。 http_port 80 选项 http_port 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正
的WEB服务器一样。 cache_mem 128 MB 共享内存大小(squid在提供服务的时候所使用的内存) maximum_object_size_in_memory 512 KB 最大内存缓存OBJECT值~如果超过则不再内存中缓存~而存入IO中! memory_replacement_policy lru 替换机制 (lru叫做 最近不常用的单元 unit一般就是常说的object 也就是当cache中的内容比如内存或硬盘达到上限时的 那么就需要进行数据的换进和换出工作) cache_dir null /tmp cache_dir存储cache内容也就是object的物理存放点
cache_dir ufs /tmp1 10000 16 256 (/tmp size L1 L2) 100G其中1层目录16个 并且每个1层目录下又有256个2层目录[或者说子目录] #磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10G ufs是一种文件存储方式 因为os一般都是从内存获取数据 那么内存的东西必须最后写的硬盘上~ sync 同步的时候用的ufs 那么squid也是一样 ufs一般是同时写入内存和硬盘 注意:size是按照M为单位的也就这个目录中最大存储容量的上限 max_open_disk_fds 0 minimum_object_size 0 KB maximum_object_size 4096 KB logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt 设置access_log中日志存储的格式~ access_log /usr/local/squid3/var/logs/access.log squid access_log为客户端请求的日志
cache_log /usr/local/squid3/var/logs/cache.log 为squid自身的运行日志
pid_filename /usr/local/squid3/var/logs/squid.pid 此三项是设置PID和日志文件位置 cache_store_log none 不记录store.log visible_hostname liuyu.blog.51cto.com liuyu.blog.51cto.com 只是标签 有利于检查是否你的那台设备在提供服务! cache_peer 192.168.1.53 parent 80 0 no-query round-robin max-conn=32 originserver squid2.5以上都是用的cache_peer来指定所需要代理的服务器的IP 这一点很重要! 由于本例squid 与web 不在同一服务器,因此需要cache_peer 指定相应WEB服务器IP acl all src 0.0.0.0/0.0.0.0 acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe cache deny QUERY cache_effective_user squid cache_effective_group squid 在这里我所以的日志都记录在:/usr/local/squid3/var/logs里 给目录相应的权限 chmod 666 -R /usr/local/squid3/var/logs chown squid:squid -R /usr/local/squid3/var/logs 保存配置!
3.测试配置是否正确
# /usr/local/squid2/sbin/squid -k parse 出现ERROR: WARNING: Cannot write log file: /usr/local/squid3/var/logs/cache.log /usr/local/squid3/var/logs/cache.log: Permission denied messages will be sent to 'stderr'. 2008/03/13 12:53:09| Creating Swap Directories FATAL: Failed to make swap directory /usr/local/squid3/var/cache: (13) Permission denied 很明显权限不对,修改后测试通过! /usr/local/squid2/sbin/squid -z
-z Create swap directories 是创建SWAP目录的! 也就是cache_dir 中的目录
相关的调试命令:
4.启动squid
/usr/local/squid3/sbin/squid -Nd1 ps aux |grep squid 查看是否启动 5.测试访问WEB站点
本机hosts 文件指向squid代理服务器 出现ERROR: Access Denied. 访问拒绝 Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect. 当前的存取控制设定禁止您的请求被接受,如果您觉得这是错误的,请与您网路服务的提供者联系。 本缓存服务器管理员:webmaster 配置文件设置不对: acl all src 0.0.0.0/0.0.0.0 http_access allow all 重新测试:OK 一切正常~~~
查看相应日志一切正常。
四. 配置squid 是方便web进行切换,至于dns,mysql,mail切换文章请大家期待~
总体来说,squid 配置不是很麻烦,主要是配置文件里的每一项,对服务器的产生的影响非常的重要。细节决定成功~
本文出自 “seven” 博客,请务必保留此出处http://liuyu.blog.51cto.com/183345/66507 本文出自 51CTO.COM技术博客 |





守住每一天
博客统计信息
热门文章
最新评论
友情链接


