squid正向代理和反向代理服务器搭建

squid是比较知名的代理软件,它不仅可以跑在Linux上还可以跑在Windows和UNIX上,它的技术已经非常成熟。目前使用squid的用户也十分广泛。squid与Linux下其他的代理软件如Apache、socks、TIS FWTK等相比,下载安装简单,配置简单灵活,支持缓存和多种协议。

squid之所以用的很多,是因为它的的缓存功能,squid的缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O。从经济角度考虑,它是很多网站架构中不可或缺的角色。

squid可以做正向代理,也可以做反向代理。当做正向代理时,squid后面是客户端,客户端想上网需经过squid。当一个客户端想要请求一个主页时,它向squid发出一个申请,要squid替它请求,然后squid连接用户要请求的网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户请求同样的页面时,squid将保存的页面立即传给用户,使用户觉得速度相当快。使用正向代理时,客户端需要做一些设置才能实现,也就是平时我们在IE选项中设置的那个代理。而反向代理是,squid后面是某个站点的服务器,客户端请求该站点时,会先把请求发送到squid上,然后squid去处理用户的请求动作。正向代理如下图所示:

反向代理如下图所示:

正向代理后面是客户端,客户端上网要通过squid上。反向代理squid后面是服务器,服务器返回给用户的数据需要走squid。正向代理用在企业的办公环境中,员工上网需要通过squid代理来上网,这样可以节省网络带宽资源。而反向代理用来搭建网站静态项(图片、HTML、流媒体、JS、CSS等)的缓存服务器,它用于网站架构中。

squid正向代理:

使用centos源中自带的squid包安装:

[[email protected] ~]# yum install -y squid

编辑squid配置文件:

[[email protected] ~]# vim /etc/squid/squid.conf

打开注释行:

cache_dir ufs /var/spool/squid 100 16 256

说明:缓存目录为/var/spool/squid,缓存大小为100MB,该目录下有16个一级子目录,每个子目录下又有256个二级子目录。

并在其下面增加一行:

cache_mem 64 MB

注意:大小不能超过上面的总大小100MB

在最后面添加要缓存的静态项:

refresh_pattern \.(jpg|png|gif|js|css|mp3|mp4) 1440  20%  2880 ignore-reload

最后面添加代理服务器要显示的主机名:

visible_hostname test.com

启动squid:

[[email protected] ~]# /etc/init.d/squid start

init_cache_dir /var/spool/squid... 正在启动 squid:.       [确定]

查看进程和端口(默认3128):

[[email protected] ~]# ps aux | grep squid

root      1738  0.0  0.1  15216  2688 ?        Ss   05:11   0:00 squid -f /etc/squid/squid.conf

squid     1740  0.1  0.4  17816  9072 ?        S    05:11   0:00 (squid) -f /etc/squid/squid.conf

squid     1742  0.0  0.0   3272   888 ?        S    05:11   0:00 (unlinkd)

root      1745  0.0  0.0   5980   744 pts/0    S+   05:12   0:00 grep squid

[[email protected] ~]# netstat -lnp | grep squid

tcp        0      0 :::3128                     :::*                        LISTEN      1740/(squid)

udp        0      0 0.0.0.0:40410               0.0.0.0:*                               1740/(squid)

udp        0      0 :::37508                    :::*                                    1740/(squid)

使用浏览器测试:

在浏览器中设置使用该代理:工具——Internet选项——连接——局域网设置——勾选“为LAN使用代理服务器”——高级——HTTP:192.168.147.139:3128——确定——确定——确定

使用浏览器访问www.baidu.com,可见能成功访问到百度。为了验证走的是我们的代理服务器,我们可以使用tcpdump工具抓个包看看

安装tcpdump抓包工具:

[[email protected] ~]# yum install -y tcpdump

此时,访问百度就可以看到抓到很多包,说明确实走的是我们的代理服务器。

同时在缓存目录下产生了很多文件:

使用curl测试:

[[email protected] ~]# curl -x127.0.0.1:3128 www.baidu.com -I

HTTP/1.0 200 OK

Server: bfe/1.0.8.18

Date: Fri, 10 Mar 2017 13:25:23 GMT

Content-Type: text/html

Content-Length: 277

Last-Modified: Mon, 13 Jun 2016 02:50:02 GMT

ETag: "575e1f5a-115"

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Pragma: no-cache

Accept-Ranges: bytes

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:3128

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

[[email protected] ~]# curl -x127.0.0.1:3128 www.qq.com -I

HTTP/1.0 200 OK

Server: squid/3.5.20

Date: Fri, 10 Mar 2017 13:26:13 GMT

Content-Type: text/html; charset=GB2312

Vary: Accept-Encoding

Vary: Accept-Encoding

Expires: Fri, 10 Mar 2017 13:27:13 GMT

Cache-Control: max-age=60

Vary: Accept-Encoding

Vary: Accept-Encoding

X-Cache: HIT from shanghai.qq.com

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:3128

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

3128端口是可以改变的:只需要修改配置文件中的http_port 3128即可。

此时的代理是任何人都可以访问任何网站,并没有对访问进行控制,我们需要编辑配置文件进行访问限制,比如只允许员工访问.aminglinux.com和.baidu.com:

编辑配置文件:

[[email protected] ~]# vim /etc/squid/squid.conf

添加如下白名单good_domain配置(也可以设置黑名单bad_domain):

acl http proto HTTP

acl good_domain dstdomain .aminglinux.com .baidu.com

http_access allow good_domain

http_access deny !good_domain

检查配置是否有错:

[[email protected] ~]# squid -kcheck (或者squid -kch)

重新加载配置文件:

[[email protected] ~]# squid -kreconfig (或者squid -kre)

使用curl测试:

[[email protected] ~]# curl -x127.0.0.1:3128 www.baidu.com -I

HTTP/1.0 200 OK

Server: bfe/1.0.8.18

Date: Fri, 10 Mar 2017 13:43:57 GMT

Content-Type: text/html

Content-Length: 277

Last-Modified: Mon, 13 Jun 2016 02:50:06 GMT

ETag: "575e1f5e-115"

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Pragma: no-cache

Accept-Ranges: bytes

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:3128

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

[[email protected] ~]# curl -x127.0.0.1:3128 www.aminglinux.com -I

HTTP/1.0 301 Moved Permanently

Server: nginx

Date: Fri, 10 Mar 2017 13:45:01 GMT

Content-Type: text/html

Content-Length: 178

Location: http://www.apelearn.com/

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:3128

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

[[email protected] ~]# curl -x127.0.0.1:3128 www.qq.com -I

HTTP/1.0 403 Forbidden

Server: squid/3.1.23

Mime-Version: 1.0

Date: Fri, 10 Mar 2017 21:45:32 GMT

Content-Type: text/html

Content-Length: 3241

X-Squid-Error: ERR_ACCESS_DENIED 0

Vary: Accept-Language

Content-Language: en

X-Cache: MISS from test.com

X-Cache-Lookup: NONE from test.com:3128

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

squid反向代理:

做百度和qq的反向代理:

百度的IP:31.135.169.125,端口:80,域名:www.baidu.com

qq的IP:61.135.157.156,端口:80,域名:www.qq.com

编辑配置文件:

[[email protected] ~]# vim /etc/squid/squid.conf

将http_port 3128修改为下面的内容:

http_port 80 accel vhost vport

cache_peer 61.135.169.125 parent 80 0 originserver name=a

cache_peer_domain a www.baidu.com

cache_peer 61.135.157.156 parent 80 0 originserver name=b

cache_peer_domain b www.qq.com

每当增加一个域名的反向代理需要增加两行。注意name不能相同。

为了测试的方便,我们将上面做的正向代理先注释掉:

#acl http proto HTTP

#acl good_domain dstdomain .aminglinux.com .baidu.com

#http_access allow good_domain

#http_access deny !good_domain

检查配置无误后重新加载配置:

[[email protected] ~]# squid -kcheck

[[email protected] ~]# squid -kreconfig

使用curl测试:

做反向代理的域名OK:

[[email protected] ~]# curl -x127.0.0.1:80 www.baidu.com -I

HTTP/1.0 200 OK

Server: bfe/1.0.8.18

Date: Fri, 10 Mar 2017 14:05:41 GMT

Content-Type: text/html

Content-Length: 277

Last-Modified: Mon, 13 Jun 2016 02:50:01 GMT

ETag: "575e1f59-115"

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Pragma: no-cache

Accept-Ranges: bytes

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:80

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

[[email protected] ~]# curl -x127.0.0.1:80 www.qq.com -I

HTTP/1.0 200 OK

Server: squid/3.5.20

Date: Fri, 10 Mar 2017 14:06:10 GMT

Content-Type: text/html; charset=GB2312

Vary: Accept-Encoding

Vary: Accept-Encoding

Expires: Fri, 10 Mar 2017 14:07:10 GMT

Cache-Control: max-age=60

Vary: Accept-Encoding

Vary: Accept-Encoding

X-Cache: HIT from tianjin.qq.com

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:80

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

没有做反向代理的域名不可达:

[[email protected] ~]# curl -x127.0.0.1:80 www.aminglinux.com -I

HTTP/1.0 503 Service Unavailable

Server: squid/3.1.23

Mime-Version: 1.0

Date: Fri, 10 Mar 2017 22:06:45 GMT

Content-Type: text/html

Content-Length: 3588

X-Squid-Error: ERR_CANNOT_FORWARD 0

Vary: Accept-Language

Content-Language: en

X-Cache: MISS from test.com

X-Cache-Lookup: MISS from test.com:80

Via: 1.0 test.com (squid/3.1.23)

Connection: keep-alive

使用浏览器测试:

首先删除浏览器中之前的正向代理配置,然后在本地主机的hosts文件(路径为C:\Windows\System32\drivers\etc\hosts)中添加测试的域名(让这些域名走我们的反向代理服务器):

192.168.147.139 www.baidu.com www.qq.com www.sina.com www.aminglinux.com

没有做反向代理的域名不可达:

时间: 2024-10-06 21:14:36

squid正向代理和反向代理服务器搭建的相关文章

Linux代理服务器—squid正向代理实验

1.代理服务器squid简介 Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器.Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网.Squid主要设计用于在Unix一类系统运行. squid可以做代理也可以做缓存. squid不仅可以做正向代理,又可以做反向代理. 正向代理

apache 配置代理服务器(正向代理,反向代理)

正向代理和反向代理是从数据流方向命名的,正向代理,代理的用户请求:反向代理,替代服务器接受请求 正向代理: 用户 -> 代理服务器 -> www  用户的请求数据给发代理服务器,代理服务器帮助用户去www请求数据,然后再返回给用户 作用:配置代理服务器,客户端做代理设置后可以访问facebook,Twitter 如何配置: <VirtualHost *:80> DocumentRoot /home/web ServerName www.xxx.com ServerAlias xxx

正向代理、反向代理的详细解析

在此注明,本文转载于:http://z00w00.blog.51cto.com/515114/1031287 一.正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forward)是一个位于客户端[用户A]和原始服务器(origin server)[服务器B]之间的服务器[代理服务器Z],为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获

图解正向代理、反向代理、透明代理

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理

正向代理和反向代理

[原创作品,技术交流.允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息.如有错误,请指正] /** author: lihaibo date: 1/25/2016 */ 今天看到几篇比较好的关于写代理服务器的文章(已经在末尾附地址),本文就是这几篇好文经过改动并结合自己实际情况来阐述代理和代理的工作原理. 正向代理(Forward Proxy)的概念 正 向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器

图解正向代理、反向代理、透明代理(转)

转自:http://www.cnblogs.com/Anker/p/6056540.html 正向代理:代理服务器代替客户端想服务器发送请求 反向代理:客户直接访问反向代理服务器,反向代理服务器通过反向代理获取服务器内容,然后返回给客户端 透明代理:修改包,中转,透明 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代

正向代理和反向代理区别【来自百度】

正向代理,也就是传说中的代理,他的工作原理就像一个跳板.简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我.从网站的角度,只在代理服务器来取内容的时候有一次记录.结论就是,正向代理,是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向

图解正向代理、反向代理、透明代理(反向代理可以实现负载均衡)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理

分解正向代理、反向代理、透明代理

套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术. 一.正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forward)是一个位于客户端