这个是前段时间做实验的时候的东西,现在记下来
upd.avira.net.cn 运行也大半年了。以前一次偶然的机会,quay776 说是使用iis后avira填代理地址为iis地址后可以升级,觉得不能理解,后来使用了 nginx 也可以,就慢慢的了解了下,觉得应该是 反向代理 的作用,虽然iis 是否有 反向代理 的功能无处可查。
好了,既然用 nginx 可以实现avira代理地址中填入nginx的地址可以升级,那么我们为啥还要讨论是否需要使用 squid 那。
记得以前我想过,avira 使用代理的时候也可以填用户名和密码的,那么我们可以适当的做点限制,比如说我们可以给不填用户名和密码的用户限速,给填入用户名和密码的用户不限速,这样可以适当的适当的解决点经济问题,毕竟vps还是每月200元租用费的;还有我们可以收集下用户的key,用来做统计用,如果过多用户使用一个key来升级的话,可以禁掉这个key,这也就变相的实现了官方是怎么封key的了。
好了,有了需求,那我们就来想办法实现,对于这两个问题nginx 都无法实现:
第一个问题:也许你会说,nginx 有 ngx_http_auth_pam_module 模块可以使用mysql中用户来认证的,但是你如果试试就知道了,nginx 的这个认证是 http 认证,而非 proxy 认证,而squid 提供的认证,是http认证,也是proxy认证,squid可以使用 auth_param 指令来使用外部script 来认证,它会给外部script传递参数的(包括用户名和密码),可以使用外部script的话,那就可以去查询mysql了,当然就可以使用 mysql 中用户了,这点我已经实验过,可行
第二个问题:nginx 我查了好多资料,应该是没法实现(自己写module另论),而squid 有个 external_acl_type 外部acl指令,也可以指定外部script,它给外部script传递参数(可包括http header中所有),而你avira升级的时候,http header 中是包括了你的key sn的,所以就可以把你key sn保存到mysql中,接下来禁止你这个key使用本代理升级就很好实现了,我相信官方判断是否一个key多人用来升级也是类似这个方法
好了,大概意思就是这样,当然实现起来还是需要点时间的,不过只要思路通了,剩下的事情还难吗?
当然实际使用中,使用 nginx 还是使用 squid+nginx 这个得看需求。
upd.avira.net.cn 运行也大半年了。以前一次偶然的机会,quay776 说是使用iis后avira填代理地址为iis地址后可以升级,觉得不能理解,后来使用了 nginx 也可以,就慢慢的了解了下,觉得应该是 反向代理 的作用,虽然iis 是否有 反向代理 的功能无处可查。
好了,既然用 nginx 可以实现avira代理地址中填入nginx的地址可以升级,那么我们为啥还要讨论是否需要使用 squid 那。
记得以前我想过,avira 使用代理的时候也可以填用户名和密码的,那么我们可以适当的做点限制,比如说我们可以给不填用户名和密码的用户限速,给填入用户名和密码的用户不限速,这样可以适当的适当的解决点经济问题,毕竟vps还是每月200元租用费的;还有我们可以收集下用户的key,用来做统计用,如果过多用户使用一个key来升级的话,可以禁掉这个key,这也就变相的实现了官方是怎么封key的了。
好了,有了需求,那我们就来想办法实现,对于这两个问题nginx 都无法实现:
第一个问题:也许你会说,nginx 有 ngx_http_auth_pam_module 模块可以使用mysql中用户来认证的,但是你如果试试就知道了,nginx 的这个认证是 http 认证,而非 proxy 认证,而squid 提供的认证,是http认证,也是proxy认证,squid可以使用 auth_param 指令来使用外部script 来认证,它会给外部script传递参数的(包括用户名和密码),可以使用外部script的话,那就可以去查询mysql了,当然就可以使用 mysql 中用户了,这点我已经实验过,可行
第二个问题:nginx 我查了好多资料,应该是没法实现(自己写module另论),而squid 有个 external_acl_type 外部acl指令,也可以指定外部script,它给外部script传递参数(可包括http header中所有),而你avira升级的时候,http header 中是包括了你的key sn的,所以就可以把你key sn保存到mysql中,接下来禁止你这个key使用本代理升级就很好实现了,我相信官方判断是否一个key多人用来升级也是类似这个方法
好了,大概意思就是这样,当然实现起来还是需要点时间的,不过只要思路通了,剩下的事情还难吗?
当然实际使用中,使用 nginx 还是使用 squid+nginx 这个得看需求。



对于较多的服务器,日志一般可以写到数据库中,更便于统计。