我现在有几个由子域名标识的虚拟主机,然后代理到服务器,如下所示:
<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]
。