因为某个业务需要,希望用squid作为用户的上网代理,并且将其中https类型的请求,符合某种规则的进行特殊转发。
网络上相关的http的转发重写倒是蛮多的,http的转发,squid可以获得到对应的get地址。但是https的默认是得不到的,因为加密了咯。
给个参考的连接,看这位大神的:http://blog.youkuaiyun.com/chinalinuxzend/article/details/1784465
https的重定向,必须让squid当做中间人,使用ssl-dump的方式来做,给个官方的配置参考说明:
http://wiki.squid-cache.org/Features/SslBump
注意官方对隐私的强调哦。嘿嘿。
按照这篇文章在http-port后面增加sslbump,
http_port 3128 ssl-bump cert=/etc/squid/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
这样,使用url_rewrite_program就可以得到https请求的参数了。
不过这种模式,要把证书的der给客户端下载,并信任,客户端才可以完美使用。比如手机端就必须这样,否则很多软件打不开。
另外,中间人的模式,所有的https都会去bump,这样开销太大,可以这样做,限定bump:
acl someserver dstdomain xxx.com
ssl_bump bump someserver
另外url_rewrite_program在百度里的,都是返回302的方式,让客户端重定向。这个不符合我的需求,我们需要squid直接rewrite后去请求,对客户端无感知。
因此补一个吧:
python返回这个:OK rewrite-url=http://new.com