Squid是Linux下一个很常用的代理服务器软件。虽然它只支持Http代理,但是凭借良好的性能和稳定性,Squid已经成为了大多数Linux发行版的默认代理服务器。但是和其他很多Linux软件一样,Squid也是居于控制台的,所有设置都是通过配置文件完成,对于习惯了Windows可视化配置的人来说这也是一种挑战。最好的Squid教程就是自带的配置文件squid.conf.default了,但是这个文件很大也很复杂,估计大多数人都没有耐心看完,因此我们还需要Google和Baidu的帮忙。
前段时间实验室买回来了一台AMD Opteron 270双路双核的曙光服务器,并开通了一个出外网的代理,需要在这台服务器上架设一个二级代理,方便实验室访问国外网站。在配置服务器的过程中遇到了很多问题,还发生了一些小插曲,这些都不说了,只是谈谈配置Squid代理服务器遇到的一些问题。
首先遇到的问题就是Squid根本跑不起来。从输出文件看到的出错信息显示没有目录写入的权限。但是我当时已经是用root用户登录运行了,而且Squid的Cache目录权限也是root,却还是提示出错。实在不知道什么问题(懒得看squid.conf.default文件),就Google和Baidu一下,原来用root用户运行时,Squid会把自己的effective用户改为squid,但是我的目录权限属于root,系统中也没有squid用户,当然就不能写入了。后来就用chown命令把Cache目录权限改了,并添加了下面两个环境变量:
|
|
|
cache_effective_user ca
cache_effective_group ca
|
| |
|
|
重新启动Squid之后,代理服务器终于运行起来了!
虽然服务是运行起来了,但是我们这台服务器是不能直接访问国外网站的,它本身也需要通过别的代理服务器出去,因此我们这台代理服务器就是二级代理了。二级代理倒不是很难,Google一下就出来了:
|
|
|
cache_peer xxx.xxx.xxx.xxx parent 3128 0 no-query
|
| |
|
|
这样就可以通过上级代理出去了。
就这样代理服务器运行和一段时间,好像也没有什么多大的问题。不过渐渐发现有些网站访问有问题。最后总结出来的问题就是:访问国外网站的POST方法无法使用。这可是非常严重的问题,因为很多网站都需要提交表单,包括很多论坛登陆都需要提交表单,这样就会有很多网站无法访问了。特别是最近几天需要访问Hotmail邮箱,却老是访问不了,很郁闷。刚开始还以为就是那么几个网站不能访问,因为国内的网站都没有问题,应该是那边给我们的代理有问题。但是回来发现原来所有国外网站都有这个问题,就开始怀疑是不是我这边的配置问题了。
为了验证花钱买回来的代理是否正常,我就直接登录了服务器,直接在服务器上访问国外网站,发现居然没有任何问题,这就确定了是我这边代理的配置问题。关键时刻还是Google发挥了作用,搜一下“Squid 二级代理 Post”,结果就出来了。原来如果我们之前访问过一些网站之后会在本地留下一些Cache,访问时当然就先访问Cache,没有就直接连接网站访问,这样当然访问不了。为了让Squid每次都通过上级代理访问网站,我们需要修改一个配置参数:
这样就可以强制每次访问所有网站都通过上级代理了。
至此,目前遇到的问题都解决了。当然Squid的配置很多,想更好地使用,还需要修改更多的配置,这以后有时间再改吧。