如何从一个端口重定向到另一个端口?

如何从一个端口重定向到另一个端口?

我有一个域,在该域​​上的不同端口上运行两个不同的 Web 应用程序。

  • example:8888/foo 上的 Java Web 应用程序
  • 例如:8080/bar 上的 PHP 网站

要求是,如果用户尝试访问 example:8888 或 example:8080 的根,则应将用户重定向到 example:8888/foo。

我怎样才能实现这个要求?

答案1

您可以通过添加冒号在重定向(或任何 URL)中添加端口,并且可以通过在 RewriteRule 中使用正则表达式来匹配站点的根。

RewriteRule ^/$ http://example.com:8888/foo [R]

在 .htaccess 文件中没有前导斜杠,因此这样更合适:

RewriteRule ^$ http://example.com:8888/foo [R]

答案2

我会将 JAVA 应用程序与 mod_proxy 或 mod_proxy_ajp 一起使用。后者适用于以下情况:a.) 这是一个 tomcat(兼容应用程序服务器)并且 b.) 您有权访问应用程序服务器的配置。

NameVirtualHost *:8888
Listen 8888

<VirtualHost *>
   ServerName example
   ServerAdmin [email protected]

   <Location />
     <IfModule mod_proxy.c>
       ProxyPass http://example:8888/foo
       ProxyPassReverse http://example:8888/foo
     </IfModule>
   </Location>

 ...
</VirtualHost>

您必须注意,您的服务器 (Apache) 不会中继代理请求。大多数发行版都默认设置了此安全设置,但请仔细检查。Apache 文档是您的好朋友:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

端口 8080 则不同,因为它由您的应用服务器本身提供服务。如果您希望它也由 Apache 处理,则应停用 Catalina(Tomcat Web 服务器)并将其设置为通过 AJP 提供服务。

相关内容