歡迎您光臨本站 註冊首頁

【求助】虛擬機下嘗試用Squid建反向代理遇到問題

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

【求助】虛擬機下嘗試用Squid建反向代理遇到問題

現在在虛擬機下自己想測試一下Squid的反向代理的加速
嘗試搭建了2個FreeBSD的虛擬機FreeBSD1和FreeBSD2 都是NAT模式來實現上網服務的
並申請了3322.org的動態DSN服務 域名為 ABC.3322.org
設置FreeBSD1的IP是:192.168.203.10 在此虛擬機上安裝了Apache並實現了web服務
設置FreeBSD2的IP是:192.168.203.30 在此虛擬機上安裝了Squid 來實現代理服務
並在虛擬機上做了埠映射設置 把宿主機的80埠是指向到了 FreeBSD2的192.168.203.30的80埠的
預期實現直接訪問 ABC.3322.org 便可以轉向到訪問FreeBSD2的提供Squid服務的虛擬機上來提供反向代理
實現加速訪問FreeBSD1上提供的web站點服務
改寫了FreeBSD2的hosts文件如下:
ee /etc/hosts
192.168.203.10 abc.3322.org
簡單設置了一下squid.conf 內容如下:

http_port 80 accel defaultsite=ABC.3322.org
cache_peer 192.168.203.10 parent 80 0 no-query originserver name=myAccel
acl mydomain dstdomain .3322.org
http_access allow mydomain
cache_peer_access myAccel allow mydomain
cache_peer_access myAccel deny all

運行Squid可以正常啟動了 但是現在遇到的問題是 在瀏覽器可以直接用192.168.203.30 可以訪問到192.168.203.10的web站點了 但是用ABC.3322.org域名卻提示如下錯誤:
Access Denied.
拒絕訪問
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.
當前的存取控制設定禁止您的請求被接受,如果您覺得這是錯誤的,請與您網路服務的提供者聯繫。

不知道Squid.conf哪裡有設置錯誤...?還是需要其他的一些設置呢...?

[ 本帖最後由 DreamRainy 於 2008-6-18 17:44 編輯 ]
《解決方案》

1. 直接用域名訪問freebsd1的apache服務可以成功嗎?
2. http_port 80 accel defaultsite=ABC.3322.org 這句加多一個參數:
    http_port 80 accel vhost defaultsite=ABC.3322.org
《解決方案》

1.因為是在虛擬機下建的 所以要把虛擬機的埠映射改到FreeBSD1的  改之後是可以用域名來訪問FreeBSD1下的web站點的
2.嘗試加上去了 不過用了Vhost參數以後 用192.168.203.30的IP地址也訪問不了了
用IP訪問提示下面的錯誤:錯誤
您所請求的網址(URL)無法獲取--------------------------------------------------------------------------------
當嘗試讀取下面的網址(URL)時: http://192.168.203.30/
發生了下列的錯誤:

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.

您的請求無法被轉送到原始網路伺服器或其他的上層緩存伺服器,發生這個問題最可能的原因是:

緩存伺服器管理員不允許本伺服器與原始網路伺服器直接連結,而
所有本伺服器指定的上層緩存伺服器都暫時無法連結。
本緩存伺服器管理員:webmaster


用域名訪問提示下面的錯誤:
錯誤
您所請求的網址(URL)無法獲取--------------------------------------------------------------------------------
當嘗試讀取以下網址(URL)時: http://ABC.3322.org/
發生了下列的錯誤:

Access Denied.
拒絕訪問 Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.
當前的存取控制設定禁止您的請求被接受,如果您覺得這是錯誤的,請與您網路服務的提供者聯繫。


本緩存伺服器管理員:webmaster


[ 本帖最後由 DreamRainy 於 2008-6-19 10:08 編輯 ]
《解決方案》

不是很清楚虛擬機的埠映射是怎麼回事.
我個人電腦上也跑了2個Linux虛擬機, 有不同的IP地址, 一個跑apache, 一個跑squid, 2個虛擬機上都務必開80埠, 無需設什麼映射吧?
你的squid配的沒什麼問題. vhost是支持基於Host:頭部的apache虛擬名字主機的, vport是支持虛擬IP主機的.
《解決方案》

apache里,對abc.3322.org配的是什麼方式的虛擬主機?
《解決方案》

澄清一下我是ADSL撥號上網的 對外網來說是分佈的動態的IP地址
宿主機實現上網的方式是 : 宿主機win2008->TP-Link的路由器->ADSL Modem->Internet  
而虛擬機就是直接通過自身的NAT來實現上網
不在虛擬機上做埠映射直接用域名是訪問不到虛擬機下的80埠的 而是直接訪問到宿主機的80埠
只有把宿主機的80埠映射到虛擬機FreeBSD2下的80埠才能讓外部網路的客戶端通過訪問域名abc.3322.org 能夠訪問到宿主機
然後再通過虛擬機的埠映射功能實現轉而訪問到虛擬機FreeBSD2的80埠
最後再通過FreeBSD2上的Squid實現反向代理訪問FreeBSD1上的web站點

我的apache虛擬機的配置是:
<VirtualHost *:80>
ServerAdmin dreamrainy@gmail.com
DocumentRoot /usr/local/www
ServerName abc.3322.org
ErrorLog /var/log/web.error.log
CustomLog /var/log/ABC.3322.org.log common
</VirtualHost>
《解決方案》

看來根本原因還是ACL拒絕了對域名的訪問.
vhost還是要的, 因為你的虛擬主機是基於域名的.
不過域名的訪問控制可能有點問題.
如果方便, 把squid.conf email給我看下.
《解決方案》

acl 呢? 訪問控制 的問題  

配置文件 過濾下貼出來唄

grep -v "#"  squid.conf
《解決方案》

再次謝謝pyh大哥的鼎立相助! 謝謝樓上的兄弟! 還真是ACL控制的問題  困擾了幾天的問題解決了
說下問題吧 也算是給後來的初學者提個醒 當個記錄好了  
原來是ACL控制語句順序的問題 http_access allow mydomain 加的晚了 在此之前用的默認配置文檔 而之前是有一句http_access deny 的 先於我設置的allow生效了
教訓教訓

[火星人 ] 【求助】虛擬機下嘗試用Squid建反向代理遇到問題已經有527次圍觀

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