这就是我想做的事情:
NameVirtualHost *
<VirtualHost *>
ServerName testsite.org
ServerAdmin [email protected]
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost *>
ServerName panel.testsite.org
ProxyPass / http://panel.testsite.org:10000/
ProxyPassReverse / http://panel.testsite.org:10000/
</VirtualHost>
<VirtualHost 12.34.56.78>
ServerName newsite.com
ServerAdmin [email protected]
DocumentRoot /var/newsite/
</VirtualHost>
<VirtualHost 12.34.56.78>
ServerName panel.newsite.com
ProxyPass / http://panel.newsite.com:10000/
ProxyPassReverse / http://panel.newsite.com:10000/
</VirtualHost>
问题是它不会接受 IP 为 12.34.56.78 的第二个虚拟主机,因为它说已经存在一个。panel.newsite.com 和 newsite.com 具有相同的 IP...所以我不确定如何才能使只有 URL“panel.newsite.com”通过代理传递到端口 10000,而 newsite.com 上的其他 URL 则不会
答案1
虚拟主机并不适用于同一 IP 地址的多个实例。当您的“NameVirtualHost”已经是 * 时,您不需要使用特定的 IP。
尝试:
<VirtualHost *>
ServerName newsite.com
ServerAdmin [email protected]
DocumentRoot /var/newsite/
</VirtualHost>
<VirtualHost *>
ServerName panel.newsite.com
ProxyPass / http://panel.newsite.com:10000/
ProxyPassReverse / http://panel.newsite.com:10000/
</VirtualHost>
如果虚拟主机指令不是唯一的(或者是通配符),那么配置将默认为第一个匹配,这就是为什么它不会超过第一个,因为 IP 覆盖了 ServerName。