2012-10-09 115 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秒表示你不被接受,但当然你会得到赞成。 –