Apache 将端口映射到 URL

Apache 将端口映射到 URL

假设我有一个在端口 3000 上运行的 Web 服务器,因此 example.com:3000,另一个在端口 80 上运行的 Web 服务器,因此:example.com

是否可以将 example.com/map 映射到 example.com:3000 ?

我想将目录映射到不同 Apache 安装的不同端口,但我想隐藏 3000 这个号码。

谢谢。

答案1

  1. 您可以使用 mod_proxy 来匹配 URL 并将连接代理到端口 3000
  2. 如果您不需要完全抽象端口 3000,则可以使用 mod_rewrite 来匹配 URL,并将其重写为端口 3000 上的 apache 将提供的内容。

答案2

使用侦听端口 3000 的 HTTP 代理。如果您尝试使用重写器,它将强制客户端重定向,而这并不是您想要的。

答案3

我知道你可以使用不同的方法将虚拟主机映射到不同的端口站点比如 example1.com 和 example2.com - 也就是仅在虚拟主机中这非常简单。

Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080

<VirtualHost 172.20.30.40:80>
ServerName www.example1.com
DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
ServerName www.example1.com
DocumentRoot /www/domain-8080
</VirtualHost>

<VirtualHost 172.20.30.40:80>
ServerName www.example2.org
DocumentRoot /www/otherdomain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>

但如果你想映射一个子目錄到不同的端口我认为如果没有后端的 URL 重写,你无法做到这一点,所以他们不知道发生了什么——这不是很干净。如果你把它做成子域名例如 map.example.com

答案4

我认为最简单的方法是拥有两个VirtualHost。

Listen 80
Listen 3000

<VirtualHost a.b.c.d:80>
DocumentRoot /html
</VirtualHost>

<VirtualHost a.b.c.d:3000>
DocumentRoot /html/map
</VirtualHost>

相关内容