Squid代理服务器高级应用两例-阿里云开发者社区

开发者社区> 技术小甜> 正文

Squid代理服务器高级应用两例

简介:
+关注继续查看

更多原文请见:http://os.51cto.com/art/201102/245290.htm

Squid是一个缓存Internet数据的一个软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。目前,Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS协议,暂不能代理POP3、NNTP等协议。并且,Squid可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。Squid可以工作在很多的操作系统中,如AIX、Digital、UNIX、FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2等。

Squid安装的例子很多了,本文不讲述,本文着重介绍2个Linux下Squid代理服务高级应用的例子。

1、配置带认证的代理服务

默认时,Squid本身不带任何认证程序,但是可以通过外部认证程序来实现用户认证。一般有以下的认证程序:LDAP认证、SMB认证、基于mysql的认证、基于sock5的密码认证和基于Radius的认证。下面介绍常用的ncsa实现的认证,ncsa是Squid源代码包自带的认证程序之一,从squid 2.5开始都包含了ncsa的模块。在Red Hat Enterprise Linux 5的/usr/lib/squid目录下可以找到ncsa_auth文件。 

要使用该认证服务,首先需要创建认证用户和密码:

#htpasswd -c /usr/local/squid/etc/ps_file guest 

如果是以后添加用户的话就把-c的参数去掉。

然后,再更改/etc/squid/squid.conf主配置文件,添加如下: 

//配置认证文件和用户文件
auth_param basic program /usr/lib/squid/ncsa_auth /usr/local/squid/etc/ ps_file 
//指定认证程序的进程数
auth_param basic children 5 
//代理服务器的名称
auth_param basic realm Squid proxy-caching web server 
//认证有效时间为2小时
auth_param basic credentialsttl 2 hours 
//只有认证用户才能访问
acl normal proxy_auth REQUIRED 
http_Access allow normal 

最后,重启squid服务即可。在浏览器里配上这个代理,打开任意网站,如果弹出了输入用户名和密码的对话框,就证明配置成功了。

2、配置反向代理服务器

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。

目前有许多反向代理软件,比较有名的有 Nginx 和 Squid 。其他还包括Socks、Apache、Jigsaw、Delegate等。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。而Squid也可以用来构建反向代理服务器。

反向代理服务器工作原理示意图
图1  反向代理服务器工作原理示意图

Squid作为反向代理服务器使用时,其工作原理为:客户端请求访问 WEB 服务时,DNS 将访问的域名解析为 Squid 反向代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到反向代理服务器。如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

Squid反向代理一般只缓存可缓冲的数据(比如 html 网页和图片等),而一些 CGI 脚本程序或者 ASP、JSP 之类的动态程序默认不缓存。它根据从 WEB 服务器返回的 HTTP 头标记来缓冲静态页面。有四个最重要HTTP头标记:

  1. Last-Modified:告诉反向代理页面什么时间被修改 
  2. Expires:告诉反向代理页面什么时间应该从缓冲区中删除 
  3. Cache-Control:告诉反向代理页面是否应该被缓冲 
  4. Pragma:用来包含实现特定的指令,最常用的是Pragma:no-cache

要配置反向代理服务器,需要在squid的主配置文件里面添加如下内容:

http_port 80 accel vhost vport
cache_peer 192.172.1.133 parent 80 0 no-query originserver 
cache_peer_domain www.test.com 192.172.1.133
acl sites dstdomain www.test.com
http_access allow sites
http_access deny all
cache_dir ufs /var/spool/squid3 100 16 256
cache_mgr yourmail@somesite.com
cache_mem 64 MB
maximum_object_size_in_memory 1028 KB
access_log /var/log/squid3/access.log squid

上述配置的详细解释如下:

http_port 80 accel vhost vpor:指定Squid所服务的端口为80,vhost和vport指的是所采用的虚拟主机的方式:基于IP地址和基于端口的,详细请参见本书对Apache Web服务器的介绍;

cache_peer 192.172.1.133 parent 80 0 no-query originserver:指定真实Web Server的IP地址;

cache_peer_domain www.test.com 192.172.1.133:告诉反向代理服务器,当客户端有对www.test.com的访问请求时,需要从真实Web Server 192.172.1.133上取得数据;

acl sites dstdomain www.test.com:定义客户端能够通过反向代理服务器访问的主机;

http_access allow sites、http_access deny all:限制客户端通过反向代理服务器能够访问的范围;

cache_dir ufs /var/spool/squid3 100 16 256、cache_mgr yourmail@somesite.com、cache_mem 64 MB、maximum_object_size_in_memory 1028 KB、access_log /var/log/squid3/access.log squid:代理服务器的常规配置。



















本文转自samsunglinuxl51CTO博客,原文链接:http://blog.51cto.com/patterson/497465,如需转载请自行联系原作者











版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10018 0
Linux_SquidProxyServer代理服务器
目录 目录 Squid proxy server Web proxy server operating principle Squid features Setup squid server Setup transparent proxy Squit authent...
1255 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10880 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13821 0
阿里云服务器ECS、轻量应用服务器和云虚拟主机的区别及对比
阿里云服务器ECS、轻量应用服务器和云虚拟主机的区别及对比
22 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7344 0
+关注
10146
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载