squid缓存服务器技术原理和部署实践

squid缓存服务器

squid(鱿鱼)--代理服务器,支持http/ftp

1.WEB加速

2.访问控制

3.提高安全性,隐藏内网

4.翻墙(GWF)

支持的代理模式有3种:

1.正向代理forward

是一个位于客户端和原始服务器(originserver)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

2.反向代理(reverseproxy)

正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

3.透明代理(简单代理):透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了

clients(192.168.0.0/24)-->squid(192.168.0.16:3128)

squid缓存服务器

做一个缓存DNS

#yum -y install bind bind-chroot

listen-on port 53 { 127.0.0.1; 192.168.0.253; };

allow-query { localhost; any; };

dnssec-enable yes;

#service named start

#chkconfig named on

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

1.安装

# yum -y install squid

/etc/logrotate.d/squid

/etc/pam.d/squid

/etc/rc.d/init.d/squid--启动脚本

/usr/sbin/squid

/var/log/squid --日志

/var/spool/squid--缓存目录

/etc/squid --配置文件的目录

/etc/squid/squid.conf--主配置文件

# cat /etc/squid/squid.conf |grep -v '#'|grep -v ^$

acl all src 0.0.0.0/0.0.0.0 --定义源地址变量:all

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443

acl CONNECT method CONNECT

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access deny all

icp_access allow all

http_port 3128 --监听端口

hierarchy_stoplist cgi-bin ?

access_log /var/log/squid/access.log squid--访问日志

acl QUERY urlpath_regex cgi-bin \?

cache deny QUERY

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern . 0 20% 4320

acl apache rep_header Server ^Apache

broken_vary_encoding allow apache

coredump_dir /var/spool/squid

更改默认配置:

# vim /etc/squid/squid.conf

http_port 3128

visible_hostname mail.baidu.com --定义squid的主机名

cache_mem 167 MB--定义缓存使用物理内存的大小,一般是物理内存的1/3

cache_dir ufs /var/spool/squid 1000 16 256 --缓存保存在硬盘中的位置

acl mynetwork src 192.168.0.0/255.255.255.0 --定义本地网络

http_access allow mynetwork --允许本地网络的主机访问squid

#启动squid

# service squid start

启动 squid:. [确定]

# netstat -tnlp|grep :3128

tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 8768/(squid)

透明代理

安装squid

yum -y install squid

配置squid (vim /etc/squid/squid.conf)

----------------

http_port 3128 transparent

--transparent表启用透明代理

cache_dir ufs /var/spool/squid 1000 16 256

--1000表最大容量1000M,16是指squid目录下的一级目录为16个

--256是指16个目录下分别有256个子文件目录

cache_mem 200 MB

--建议给内存的三分之一左右

----------------

设置数据流定向

iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

--即,当192.168.0.0/24网段的用户从eth0的80端口访问本机时

--系统重定向到3128端口,而用户不知道端口已转换。

=======================================================================

反向代理

原理:

192.168.0.20(lan)

webserver<-->squid<-->internet

192.168.0.1 192.168.1.20(wan)

在192.168.0.1(webserver)端的配置

是堡垒主机,即真实服务器,

192.168.1.20 是代理主机,面向客户

其通过squid转接到真实机上,然后回复请求

以下是在堡垒主机上操作(0.1)

vim /etc/hosts

添加:

--------------

192.168.0.1www.abc.comwww.bcd.com

--------------

--为了域名能快速解析

添加设置两个虚拟主机

yum -y install httpd

vim /etc/httpd/conf/httpd.conf

---------------

NameVirtualHost *:80

<VirtualHost *:80>

DocumentRoot /var/www/html/www.abc.com

ServerName www.abc.com

ErrorLog logs/www.abc.com-error_log

CustomLog logs/www.abc.com-access_log combined

</VirtualHost>

<VirtualHost *:80>

DocumentRoot /var/www/html/www.bcd.com

ServerName www.bcd.com

ErrorLog logs/www.bcd.com-error_log

CustomLog logs/www.bcd.com-access_log combined

</VirtualHost>

---------------

service httpd restart

以下在代理主机上操作

在192.168.1.20上注册两个域名

yum -y install bind caching-nameserver

vim /etc/named.conf

---------------

ptions {

listen-on port 53 { 127.0.0.1; any; };

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

memstatistics-file "/var/named/data/named_mem_stats.txt";

allow-query { localhost; any; };

allow-query-cache { localhost; any; };

};

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

view localhost_resolver {

match-clients { localhost; any; };

recursion yes;

include "/etc/named.rfc1912.zones";

};

---------------

vim /etc/named.rfc1912.zones

--添加:

---------------

zone "abc.com" IN {

type master;

file "abc.com.zone";

allow-update { none; };

};

zone "bcd.com" IN {

type master;

file "bcd.com.zone";

allow-update { none; };

};

---------------

cd /var/named

cp -a localdomain.zone abc.com.zone

vim abc.com.zone

---------------

$TTL 86400

@ IN SOA dns.abc.com. root.abc.com. (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS dns.abc.com.

dns IN A 192.168.1.20

www IN A 192.168.1.20

---------------

注意:dns 和 www 对应的主机IP都为代理主机IP

cp -a abc.com.zone bcd.com.zone

vim bcd.com.zone

--只需要把abc.com.zone里的abc.com改为bcd.com即可

service named restart

配置squid 实现反向代理

vim /etc/squid/squid.conf

---------------

http_port 80 vhost vport

cache_peer 192.168.0.1 parent 80 0 originserver name=abc

cache_peer 192.168.0.1 parent 80 0 originserver name=bcd

cache_peer_domain abc www.abc.com

cache_peer_domain bcd www.bcd.com

http_access allow all

---------------

cache_peer中,192.168.0.1为真实机(堡垒)的IP

name=abc 其中的abc为任意取的,但对应cache_peer_domain中的abc

cache_peer_domain中 www.abc.com 为真实机中定义的域名

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();