Squid反向代理:实现Web应用加速(3)

  三.squid做反向代理

  1.安装

  注:如果系统是RedHat 9,需要安装epoll的库文件(epoll有效的降低系统的I/0瓶颈,资源占用率)

  wget

  为了安全起见,建立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 配置不是很麻烦,主要是配置文件里的每一项,对服务器的产生的影响非常的重要。细节决定成功。

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfxjs.html