透明重定向到端口 8080
Posted
技术标签:
【中文标题】透明重定向到端口 8080【英文标题】:Transparent redirect to port 8080 【发布时间】:2012-09-29 20:32:42 【问题描述】:我的服务器上的 8080 端口上有一些 Web 应用程序可用。
由于我的一些用户由于他们的防火墙而无法访问端口 8080,我想在我的 apache 服务器上设置一个重定向。我想要以下网址
http://dev2.test.com/tomcat/somewebapp/restofthepath
显示可访问的内容
http://dev2.test.com:8080/somewebapp/restofthepath
当然我不希望用户输入第一个地址来查看第二个地址。
我在/var/www
中添加了以下.htaccess
文件:
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/
你能告诉我我该怎么做吗?
【问题讨论】:
只需从重写规则中删除 P 标志。 @alk 我收到此响应“在此服务器上找不到请求的 URL /tomcat/。” 您需要在RewriteRule ^/tomcat/(.*)$
中使用$
来做什么?
它似乎不需要,但删除它不会改变任何事情。经过多次测试后,我的印象是第一部分或 RewriteRule 与我的 URL 不匹配。甚至^/tomcat/
似乎也不匹配。
不确定,但你试过了吗:RewriteRule ^/tomcat(.*) http://dev2.test.com:8080$1 [QSA,L]
【参考方案1】:
您可能应该使用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
【讨论】:
很可能在您网站的<VirtualHost>
块中。
好的,它有效。不在 VirtualHost 部分,我没有。如果您不同意,我会在您的答案中添加一些内容以精确配置。【参考方案2】:
执行您所做的只会向用户发送到端口 8080 的重定向(他们无法使用)。您需要使用apache mod_proxy 或其他代理服务器。
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
【讨论】:
你能告诉我我应该把这个写在什么文件里吗? 上下文:服务器配置、虚拟主机、目录。请参阅文档。 谢谢尼尔。迟到 32 秒意味着你没有被接受,但你当然会得到支持。 @dystroy 32 秒是我生命中的故事 :) 希望我能帮上一点忙。以上是关于透明重定向到端口 8080的主要内容,如果未能解决你的问题,请参考以下文章