歡迎您光臨本站 註冊首頁

一個較為複雜的squid問題

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

一個較為複雜的squid問題

目前,有一個比較複雜的問題,向大家請教,請大家幫助。

我有一個域名 www.proxy.com 希望做個二級代理,其父代理是 111.222.333.444:8080,認證用戶名是user,密碼是pass。

我希望:
A用戶通過http://www.proxy.com:80 -->  111.222.333.444:8080 --> http://www.aaa.com(返回到A的頁內鏈接被重寫為http://www.proxy.com:80 )
B用戶通過http://www.proxy.com:81 -->  111.222.333.444:8080 --> http://www.bbb.com(返回到B的頁內鏈接被重寫為http://www.proxy.com:81 )


這裡是通過url訪問的方式,而不是在IE代理伺服器中進行設置,因此具有唯一性,也就是說,看上去 http://www.proxy.com:80 是 http://www.aaa.com 的鏡像,而 http://www.proxy.com:81 是 http://www.bbb.com 的鏡像。

我對squid不是很熟悉,這個軟體可以隱藏父代理。我想請問該如何設置 squid.conf 文件?需要安裝哪些軟體?我自己的伺服器為windows 操作系統。

謝謝大家,這裡可能涉及到以下幾個問題:

1. 對A用戶和B用戶的認證(由於A、B是個用戶組,成員隨時添加和刪除,並且有到期期限限制,可能需要另外的軟體支持)。

2. 通過url訪問的方式,而不是在IE瀏覽器代理設置。

3. 遠端web伺服器返回的所有鏈接在二級代理上被重寫后發給用戶。



這個是非常複雜的了,望高手給予指點。非常非常感謝。
《解決方案》

看來這個問題太複雜了。

那我想問個簡單的問題,有沒有人幫助我呢?

假如說,現在國外某站點 http://www.yahoo.com ,國內的用戶由於某種願意無法訪問。

有一個一級代理 111.222.333.444:8080 可以訪問這個站點,但需要國內客戶需要在瀏覽器中進行設置,而這個代理又不是我的。我希望改變這種狀況,讓客戶在瀏覽器地址欄中輸入我的網址 http://www.mydomain.com (這個站點所在的Ip也必須通過一級代理訪問http://www.yahoo.com)就可以得到和直接訪問http://www.yahoo.com相同的效果。

也就是說,用戶 --> http://www.mydomain.com

我的伺服器在後台通過一級代理111.222.333.444獲取http://www.yahoo.com的內容,經過將源碼中的www.yahoo.com過濾為www.mydomain.com 並返回給客戶。

我用
http-prot 80
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_uses_host_header on

cache_peer 111.222.333.444 parent 8080 7 login=username:password default no-query

配置中沒有出現終端網址http://www.yahoo.com,結果也不對。

[ 本帖最後由 sushy001 於 2009-3-8 17:27 編輯 ]
《解決方案》

squid 2.7 反向代理的實現


http_port 80 transparent
cache_peer 192.168.1.103 parent 81  0 no-query originserver
visible_hostname volcano
acl all src all
http_access allow all


代理地址: 192.168.1.103 web伺服器地址 192.168.1.103:81
在瀏覽器中輸入 http://192.168.1.103 成功解析 http://192.168.1.103:81



http_port 80 transparent
cache_peer 192.168.1.1 parent 80 0 no-query originserver
visible_hostname volcano
acl all src all
http_access allow all


代理地址: 192.168.1.103 web伺服器地址 192.168.1.1
在瀏覽器中輸入 http://192.168.1.103 成功解析 http://192.168.1.1

但如果改成


http_port 80 transparent
cache_peer www.sohu.com parent 80  0 no-query originserver name=sohu
cache_peer_domain sohu www.sohu.com
visible_hostname volcano
acl all src all
http_access allow all


在瀏覽器中輸入 http://192.168.1.103 提示

While trying to retrieve the URL: http://192.168.1.103/

The following error was encountered:

Unable to forward this request at this time.
This request could not be forwarded to the origin server or to any parent caches. The most likely cause for this error is that:

The cache administrator does not allow this cache to make direct connections to origin servers, and
All configured parent caches are currently unreachable


[ 本帖最後由 sushy001 於 2009-3-8 20:17 編輯 ]
《解決方案》

只有人開貼,沒有人回帖,繼續更新。

按照對標準代理,透明代理和反向代理的描述,我認為我做的是反向代理。

標準代理需要在瀏覽器中進行設置。透明代理,我還不是很了解防火牆的意思,但貌似也不太像。

而反向代理是指 用戶瀏覽器訪問的url地址是我的代理地址,而不需要在瀏覽器中進行代理伺服器設置。

但通常的反向代理都是指,該web伺服器在區域網中,而我設置的這個代理,web伺服器也在廣域網中,並且還要有個二次代理。

即 用戶--> http://www.myproxydomain.com -- 二級代理 -- web伺服器。

如果兩者都在廣域網中,那麼我用squid 搭建的這個http://www.myproxydomain.com 就可以使用一塊網卡,並且不需要緩存功能。

squid 的80埠用來監聽用戶的請求,但他用哪個埠像用戶發送數據呢?而且他向二級代理髮出請求用哪個埠呢?接收二級代理返回的數據用哪個埠呢?

另外,對於反向代理需要設置dns解析,這個究竟該怎麼做呢?

請高手們明示,我實在太外行啊。
《解決方案》


http_port 80 accel vhost vport
http_port 8080 accel vhost vport
cache_peer www.test1.com parent 80 0 no-query originserver name=test1
cache_peer_domain test1 test1.myproxydomain.com

cache_peer www.baidu.com parent 80 0 no-query originserver name=test2
cache_peer_domain test2  test2.myproxydomain.com

cache_peer www.sina.com parent 80 0 no-query originserver name=test3
cache_peer_domain test3 test3.myproxydomain.com

acl all src 0.0.0.0/0.0.0.0
http_access allow all

cache_peer_access test1 allow all
cache_peer_access test2 allow all
cache_peer_access test3 allow all

visible_hostname myproxydomain



這是直接訪問,那如果做二級代理呢?

[火星人 ] 一個較為複雜的squid問題已經有650次圍觀

http://coctec.com/docs/service/show-post-24027.html