透明重定向到端口 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的主要内容,如果未能解决你的问题,请参考以下文章

apache永久重定向所有请求到另一个端口

spring security 重定向登录时端口 8080 来自哪里?如何将其更改为使用端口 443?

如何使用 Apache httpd 重定向两个不同的端口?

Apache重定向到另一个端口

如何在 Spring 中重定向到另一台主机

如何从 Apache 重定向到 Tomcat?