2012-10-09 113 views
3

我有我的8080端口上透明重定向到端口8080

服務器作爲我的一些用戶可用,由於他們的防火牆一些Web應用程序無法到達端口8080,我想設置一個重定向在我的apache服務器上。伊爾想以下網址

http://dev2.test.com/tomcat/somewebapp/restofthepath 

顯示什麼是可訪問的

http://dev2.test.com:8080/somewebapp/restofthepath 

當然,我不希望用戶輸入的第一個地址看到第二個。

添加以下.htaccess文件中/var/www

RewriteEngine on 
RewriteCond %{REQUEST_URI} ^/(tomcat) 
RewriteRule ^/tomcat/(.*)$ http://dev2.test.com:8080/$1 [P,QSA,L] 

但我在/var/log/apache2/error.log得到這個錯誤:

[Tue Oct 09 15:23:06 2012] [error] File does not exist: proxy:http://dev2.test.com:8080/tomcat/ 

能否請你告訴我,我該怎麼辦?

+0

只需從您的重寫規則中刪除P標誌。 – alk

+0

@alk我得到這個迴應「在這臺服務器上沒有找到請求的URL/tomcat /」。 –

+0

你需要'RewriteRule ^/tomcat /(.*)$'中的'$'符號麼? – alk

回答

7

您應該使用mod_proxy而不是mod_rewrite

ProxyPass /tomcat http://dev2.test.com:8000/ 
ProxyPassReverse /tomcat http://dev2.test.com:8000/ 

編輯:

此配置必須在httpd.conf。它可能位於VirtuaHost部分或文件的根目錄中。

您必須啓用mod_proxy。這可以使用

LoadModule proxy_module   /usr/lib/apache2/modules/mod_proxy.so 
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so 
+0

你把這個放在哪裏? –

+0

最有可能的是,在您的網站的「」塊中。 – lanzz

+0

好的,它的工作原理。不在VirtualHost部分,我沒有。如果您不反對,我會在您的答案中添加一些內容以精確配置。 –

2

做你所做的只會發送一個重定向到端口8080給用戶(他們不能使用)。您需要使用apache mod_proxy或其他代理服務器。

ProxyPass /foo http://foo.example.com/bar 
ProxyPassReverse /foo http://foo.example.com/bar 
+0

你能告訴我該寫什麼文件嗎? –

+0

上下文:服務器配置,虛擬主機,目錄。請參閱文檔。 –

+0

謝謝尼爾。遲到32秒錶示你不被接受,但當然你會得到贊成。 –