您的位置:首页 > 运维架构 > 反向代理

Squid反向代理SSL加密的SharePoint站点

2013-06-27 11:38 906 查看
References:
http://apps.hi.baidu.com/share/detail/20306022
http://www.ajaxstu.com/Proxyfuwuqi/333031.html
http://www.php-oa.com/tag/squid
零. 环境介绍
系统:CentOS 5.7 64bit
Squid:2.6STABLE21
反代目标:https://www.avepoint.net
一. 安装Squid
Squid 官方下载地址:
http://www.squid-cache.org/Versions/
作为老牌的Proxy软件,Squid的支持度非常好,除了源码包和详尽的文档外,主流发行版均有二进制包直接提供。
此次实验的由于目的十分单纯,为了简化流程,采用直接yum安装:
yum install squid -y

二. 修改配置
1. yum 安装的 squid 默认是没有 visible_hostname 的,首先添加 visible_hostname:
vi squid.conf
这里我添加了 ave_squid 作为 squid 的主机名:
visible_hostname ave_squid

2. 添加acl允许squid访问欲代理站点
acl ssl_server dstdomain .avepoint.net
#对 *.avepoint.net 允许访问
http_access allow ssl_server
!注意:不建议直接放开 http_access allow all,虽然看似省事,但可能会造成安全隐患!

3. 增加squid监听443端口并加载自签证书
https_port 443 cert=/etc/squid/ssl/avepoint.net.crt key=/etc/squid/ssl/avepoint.net.key defaultsite=www.avepoint.net accel

4. 预防老版本IE的SSL bug
ssl_unclean_shutdown on

5. 添加源网站
cache_peer www.avepoint.net parent 443 0 no-query no-digest originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=on
a) login=PASS 是为了告知 squid 此源网站需要用户名/密码验证,用于解决SP等网站的登录认证;
b) ssl 为指定协议,后跟的 sslflags=DONT_VERIFY_PEER 为不进行源端SSL证书验证,可以解决上级网站采用自签证书造成的中断,以及减少响应时间;
c) front-end-https=on 是为微软OWA使用SSL反代理而量身订做的参数。

6. 关于 cache_mem 和 cache_dir
如字面所述,cache_mem 是将部分缓存(通常是指定容量以下的小文件)放在内存中,cache_dir是指定硬盘上的squid缓存目录。此处我们不涉及缓存内容,所以保持默认即可。
值得一提的是,硬盘缓存可以使用 tmpfs 文件系统,即所谓的 shm,实质上大致与 ramdisk 等同,可以提高性能。
至此配置基本完成,可以启动squid测试了:



三. 备注
1. 如果 squid 反代的并发较高时,可能会遇到类似 file descriptor error 的错误,多是因为Linux默认的同时打开文件数仅为1024,而此时打开的缓存文件大小早已超过这个数值。
解决方式:
ulimit -n 65535
2. squidclient 是 squid 自带的一个功能十分强大的管理软件,可以独立或搭配其他软件对 squid 的状态和缓存内容进行查看和操作。例:
squidclient -t 1 -h localhost -p 3128 mgr:info
注意,3128 端口需要在 squid 中定义为 http_port。
3. 日志位置
/var/log/squid :
access.log 代理访问日志
cache.log squid 缓存的相关运行信息
squid.out squid 程序本身的运行信息
store.log 对缓存文件的操作记录
4. 自签证书的生成可参照Nginx的笔记,在此不再赘述。
四. 小结
作为老牌的 Proxy,Squid 参数十分繁杂,但与之对应的是极大丰富的功能。
如果需求简单明确如本实验所述的话,不需要过多的配置就可以实现所需功能。
让我留下深刻印象的是,Squid 提供了强大的对 header 进行操作的方式,可以细致地控制 header 输出与否,以及对 header 进行更改等等,实用性很强。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: