2010-01-20 98 views
0

我在瀏覽器中配置默認​​的tomcat安裝(在「localhost」端口「8080」上運行)作爲代理服務器,並嘗試連接到http://www.google.comTomcat和代理請求

我希望有一條錯誤消息說tomcat沒有配置爲代理服務器,或者我應該得到谷歌網站的內容。

相反,我得到了我的tomcat安裝的index.html頁面。

什麼問題?

回答

2

Tomcat不知道它應該代理請求。它只知道的是,您的瀏覽器出現了,問它的東西,像這樣:

GET http://www.google.com/example HTTP/1.1 
[plus other headers] 

與Apache HTTPD,你可能有構造,使得當一個請求顯示出來的主機,這不是它本身,它的作用該請求的代理。

Tomcat通常不被用作代理。然而,Tomcat經常被用在反向代理的後面,其請求可能是諸如「www.google.com」之類的東西,可能會被轉發回Tomcat作爲它應該提供的站點。 Tomcat的標準配置幾乎接受指定爲自己的主機,並採用它來創建對自身的絕對引用,假設如果請求到達它,它是合法的。你當然可以通過配置來改變這種行爲,但是如果你不知道,Tomcat就會嘗試服務你從其應用程序中請求的東西,假設你知道你在使用Host頭進行的操作。

+0

我應該修改上述內容。我給出的示例頭* *表示代理請求,因爲URI包含主機。如果它是來自瀏覽器或反向代理的直接請求,它將以/開頭。反向代理將不同地指定代理主機。所以,Tomcat肯定有可能確定這是一個將其視爲代理的請求。無論出於何種原因,默認情況下Tomcat都會將其視爲正常請求。所以,除非你真的知道你在做什麼,否則不要將Tomcat設置爲你的代理。 – sosiouxme 2012-04-16 16:52:13

0

所有代理服務器都會傳遞請求和響應。從瀏覽器的角度來看,您請求了一個URL,代理服務器返回了HTML並且代碼爲200,所以這被解釋爲來自請求的URL的響應。由於這是一個靜態頁面,而不是一個真正的代理服務器,所有請求都會導致相同的靜態響應。

+0

如果我訪問http://www.google.com/examples,我會看到我部署的tomcat的示例應用程序。這對我來說沒有意義。 我同意瀏覽器只是忠實地顯示內容。我的問題是與tomcat,它已被配置爲代理服務器。 – Raghuram 2010-01-20 11:28:10

+0

你是如何將其配置爲代理服務器的?根據您的設置,它可能只是某些Web應用程序的代理,或者可能在另一個端口上運行。 – davogones 2010-01-20 15:56:18

+0

我在tomcat中什麼也沒做。我在瀏覽器上將此Tomcat配置爲代理服務器。這是爲了檢查當服務器收到它不能遵守的代理請求時的行爲。 當我做以下 GET http://www.google.com/myapp HTTP/1.1 我想知道爲什麼tomcat應該忽略前導URL和處理請求作爲/ myapp? – Raghuram 2010-01-21 02:53:17

0

Tomcat沒有任何內置的代理功能。我不知道你在說什麼配置。

瀏覽器將請求一個URI,如「http://google.com/examples」。如果Tomcat配置了默認主機和默認歡迎頁面,則會顯示它。它完全不理解代理請求。

您必須安裝代理servlet並將其映射到根目錄才能使用Tomcat作爲代理服務器。