我可以使用 apache 根据子目录而不是子域进行反向代理吗?

我可以使用 apache 根据子目录而不是子域进行反向代理吗?

我现在有几个由子域名标识的虚拟主机,然后代理到服务器,如下所示:

<VirtualHost *:80>
ProxyPass / http://192.168.1.1/
ProxyPassReverse / http://192.168.1.1/
ServerName sub1.example.com
</VirtualHost>

<VirtualHost *:80>
ProxyPass / http://192.168.1.2/
ProxyPassReverse / http://192.168.1.2/
ServerName sub2.example.com
</VirtualHost>

我想要的是让 apache 基于 example.com/sub1、example.com/sub2 等进行代理。

我尝试过的所有方法似乎都不如子域名有效。我尝试过使用 Alias 指令、Location 块等,但它不断将 URL 重写到我的浏览器,而浏览器当然无法到达后端机器。如何正确完成此操作?

答案1

不清楚你尝试了什么。我首先要尝试的是一个简单的代理通道 /subN 到后端机器

<VirtualHost *:80>
    ProxyPass /sub1 http://192.168.1.1/
    ProxyPassReverse /sub1 http://192.168.1.1/
    ProxyPass /sub2 http://192.168.1.2/
    ProxyPassReverse /sub2 http://192.168.1.2/
    ServerName example.com
</VirtualHost>

答案2

根据 URL 中的路径选择后端是可能的,也是基本/常见的。

真正做到这一点的概率更小目录基于此,因为通常代理发生在请求映射到磁盘上的任何位置之前 - 但可以使用 mod_rewrite 和标志来完成[P]

相关内容