The requested URL could not be retrieved/ TCP_DENIED/403

0: 代理服务器简介

代理服务器是建立在TCP/IP协议应用层上的一种服务软件,是以HTTP协议为基础的。工作过程简单来说分为4步:客户端向服务器发送的请求到达代理服务器;代理服务器把请求转发给客户端真正需要联系的服务器;服务器向代理服务器返回响应;代理服务器把响应返回给客户端。


启动代理服务器,此时代理服务器主进程会一直监听某个绑定的端口,同时会初始化代理服务器缓存。

客户端A向代理服务器发出访问Web服务器资源的请求。

当代理服务器主进程监听到客户端A发来了请求,便会创建一个子进程应对客户端A发来的请求;而主进程继续进行监听工作。

已创建的代理服务器子进程与客户端建立连接,读取客户请求并对客户请求进行解析,然后依照在代理服务器上预设的访问规则列表,检验当前接收到的请求;如果请求满足规则约束,则可以在代理服务器缓存中查找是否存在所需要的信息。

子进程开始查询缓存,根据查询结果做出不同处理。

      一种情况是在缓存中命中客户端A请求的信息,并且该信息没有过期,则将信息直接传送给客户端。依据具体的缓存更新算法更新代理服务器缓存。

      另一种情况是缓存中命中客户端A请求的信息,并且该信息已经过期,则该子进程代理客户端A向目标Web服务器发出请求。

目标Web服务器响应代理服务器子进程发来的请求,同时代理服务器子进程依据具体的缓存更新算法更新代理服务器缓存。

代理服务器子进程将目标Web服务器回应的信息转送给客户端A。

代理服务器子进程处理完客户端A的代理服务后,进程自动终止,所有相关资源(各种连接)全部释放。

其他客户端的请求过程同上。


① 客户端A向代理服务器提出访问Internet的请求。 
② 代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。 
③ 如果缓存中存在客户端A需要的信息,则将信息传送给客户端。如果不存在,代理服务器就代替客户端向Internet上的主机请求指定的信息。 
④ Internet上的主机将代理服务器的请求信息发送到代理服务器中,同时代理服务器会将信息存入缓存中。 
⑤ 代理服务器将Internet上主机的回应信息传送给客户端A。 
⑥ 客户端B向代理服务器提出相同的请求。 
⑦ 代理服务器也首先与访问控制列表中的访问规则相对照。 
⑧ 如果满足规则,则将缓存中的信息传送给客户端B。


因此利用上面代理服务器的原理,我们可以对目标Web服务器响应的数据包进行更改,如添加自己的代码到响应的数据包中。

1:代理服务器squit遇到的问题

首先看看遇到的问题:



上面的图中可以知道,deny了所有的TCP连接请求,TCP_DENIED/403。

2:squid常用命令:

/usr/local/squid/sbin/squid -z 初始化缓存空间
/usr/local/squid/sbin/squid 启动
/usr/local/squid/sbin/squid -k shutdown 停止
/usr/local/squid/sbin/squid -k reconfigure 重新载入配置文件
/usr/local/squid/sbin/squid -k rotate 轮循日志

3:squit的拒绝日志分析

其中在配置文件中添加如下选项:

debug_options ALL,4

cache_log /var/log/squid/ cache.log

之后查看文件cache.log文件,此处分析一个完整的HTTP请求到达squit之后,squit是如何处理此请求的。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章