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是如何處理此請求的。





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