根据 URL 从 80 端口重定向到不同的端口

Posted

技术标签:

【中文标题】根据 URL 从 80 端口重定向到不同的端口【英文标题】:Redirecting from port 80 to different ports based on URL 【发布时间】:2015-03-15 19:57:50 【问题描述】:

我有两个应用程序(Atlassian JIRA 和 Confluence)监听端口 8080 和 8090,可通过 example.com:8080/jira 和 example.com:8090/confluence 访问。 我想在端口 80 上设置重定向,以便我可以通过 example.com/jira 和 example.com/confluence 访问服务。

有没有简单的方法来实现这一点?

【问题讨论】:

指出您正在使用的网络服务器会很有帮助(并添加适当的标签)。 对不起,Levi,我只启动并运行了两个应用程序,没有其他 Web 服务器与它们一起运行。我一直在寻找从头开始重定向的最简单方法,现在找到了解决方案。 【参考方案1】:

有两种方法可以解决这个问题。

重定向方法

    您似乎非常精明地设置服务器。您需要一个在 80 端口上运行的 Web 服务器。(Apache:Windows/*nix;IIS:Windows) 如果您只需要 example.com/jira 和 example.com/confluence,请设置一个虚拟站点/文件夹。如果您的 DNS 记录指向主机,您也可以使用 jira.example.com 和 confluence.example.com。 使用 302 重定向(临时/找到)将访问此 URL/虚拟主机的浏览器重定向到新 URL。此方法会更改浏览器中的 URL,因此浏览器实际上会显示 8080 和 8090 端口。

代理方法

如果您想要透明的 URL,另一种方法是在 2 个 URL 上设置反向代理。这样,端口 80 上的代理服务器就好像内容来自端口 80 一样响应客户端。Web 服务器在后台获取页面并提供它们。您还可以使用反向代理缓存内容。

【讨论】:

谢谢阿比。我查看了 302 重定向,但不确定如何在没有 /jira 和 /confluence 实际指向文件而不仅仅是虚拟目录的情况下映射它们。然而,我接受了这个想法,发现我可以使用 Apache httpd 服务器以另一种方式重定向。通过 httpd.conf,我添加了以下几行:'Redirect temp /jira example.com:8080/jira' 和 'Redirect temp /confluence example.com:8090/confluence' 这在测试中就像一个魅力,我将实施很快! 不错。是的。那应该是诀窍。此外,作为仅供参考;您可以使用 301 重定向,但这被认为是永久重定向,如果您更改 URL,您可能会遇到问题。 301 通常会无限期地缓存在浏览器中。祝你好运。 您将如何设置反向代理,以便 example.com 上的所有流量都转到端口 8069,除了要转到端口 80 的 example.com/wp/*? 你可以试试 URL 重写。这样您就可以根据正则表达式强制不同的 URL 转到不同的位置。

以上是关于根据 URL 从 80 端口重定向到不同的端口的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]nginx 80端口重定向 转发到443端口

FPipe, CMD命令行下的端口重定向工具

java.net.SocketException: Permission denied(将80端口重定向到8080端口)

java.net.SocketException: Permission denied(将80端口重定向到8080端口)

非标准 HTTPS 端口的 VirtualBox 端口重定向问题

树莓派/Debian HTTP 到 HTTPS 端口重定向