有时,我们为一台服务器或者VPS分配了多个IP,我们希望给每一个站点分配一个独立的IP,或者将其中的几个IP分配给一个网站,这些需要我们手动更改Apache的虚拟主机配置文件以满足我们的需求。
我们知道,虚拟主机的配置部分是逐个写在<VirtualHost *:80>…</VirtualHost>这一部分中的,而*就代表了IP地址。有很多朋友不明白这里的*是什么意思,以为就是代指任意IP地址。其实这里的*代指的是“剩余未分配”的IP地址。因此,若VPS只有一个IP地址,则每个虚拟主机的IP地址分配均需要填*,或者都填为12.34.56.78(假设你的IP地址是12.34.56.78)。错误的填写方式将造成后面几个虚拟主机无法被解析到和访问到。
在多IP情况下,我们假设为100.0.0.0/24(共252个)的IP段,则需要为具体的某一个虚拟主机分配单独的IP地址,且需注意在剩余未分配IP数量大于1的情况下,*的数量不能多于1。比如我们在这个/24上建了4个网站,网站A分配的IP是100.0.0.3,网站B分配的IP是100.0.0.4,此时若网站C和D的配置文件的IP部分填写的均为*,且C的配置文件位于D的配置文件之前,则网站C可以由100.0.0.0/24除了100.0.0.3和100.0.0.4的任何一个IP地址访问到,相当于为网站C分配了250个IP地址;而此时,网站D不可以由任何一个IP访问到,既没有为网站D分配任何一个IP地址。
如果需要给几个网站分配相同的IP地址,则仅需在每个虚拟主机的IP部分填上一个相同的IP即可。在这种情况下重启Apache服务器会出现警告,可不予理睬。
综上,我们发现,对于每个虚拟主机的IP地址的配置,我们对其最好的处理方式就是在配置文件中写明为每个虚拟主机配置的IP。除非VPS只有一个IP,否则就尽量不要用*这个符号来进行IP的指代,这样就可以避免IP指向和解析的错误。
所谓同行,就是那些比我们差十万八千里的人。