我的主要网址如下http://apps1.example.com我想创建别名 http://apps1.example.com/svc-base
在我的虚拟主机配置中
<VirtualHost *:80>
ServerName apps1.example.com
ProxyPreserveHost On
ProxyPass / http://123.456.7.8:880/
ProxyPassReverse / http://123.456.7.8:880/
Alias /svc-base !
ProxyPass /svc-base http://123.456.7.9:881/
ProxyRequests Off
AllowEncodedSlashes NoDecode
</VirtualHost>
从浏览器访问 url 时http://apps1.example.com/svc-base只需重定向到主页http://apps1.example.com/ 我的代码有什么问题?需要建议,谢谢 :)
答案1
Alias /svc-base !
用法Alias
指令是:
Alias [URL-path] file-path|directory-path
!据我所知,感叹号不是Alias
指令(除非您实际上匹配名为的文件/目录/!
)。
(也许您对这个事实感到困惑,在您不想反向代理子目录并排除 ProxyPass 匹配的路径的情况下,感叹号! 可以与指令结合使用。)ProxyPass
我认为您想要实现的目标并不需要任何Alias
方法。
看来您想要ProxyPass /svc-base
访问与根 URL 不同的后端服务器ProxyPass /
。
这是通过改变ProxyPass
指令,因为 ProxyPass 规则是按照配置顺序检查的。第一个匹配的规则获胜。因此通常您应该首先从最长的 URL 开始对冲突的 ProxyPass 规则进行排序。
ProxyPass /svc-base http://123.456.7.9:881/
ProxyPassReverse /svc-base http://123.456.7.9:881/
ProxyPass / http://123.456.7.8:880/
ProxyPassReverse / http://123.456.7.8:880/