我现在所拥有的是几个由子域标识的虚拟主机,然后像这样代理服务器:
<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指令,位置块等,但它不断重写URL到我的浏览器,当然不能到达后端机器。 这怎么能正确地做到?
目前还不清楚你尝试过什么。 我会尝试的第一件事是一个简单的代理通过/ 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>
根据URL中的pathselect后端是可能的,也是基本的/常见的。
使真正的基于目录的代码更为罕见,因为在请求被映射到磁盘上的任何地方之前,通常会发生代理 – 但是可以使用mod_rewrite和[P]标志来完成。