错误:" VirtualHost :80-不支持将端口和非*端口与NameVirtualHost地址混合,进行未定义的结果"

时间:2020-03-05 18:46:18  来源:igfitidea点击:

我在WindowsXP上运行WAMP v2.0,并且在http-vhosts.conf文件中设置了一堆虚拟主机。

这是可行的,但是在上周每当我尝试启动WAMP时,事件日志中都会出现此错误:

VirtualHost *:80 -- mixing * ports and
  non-* ports with a NameVirtualHost
  address is not supported, proceeding
  with undefined results.

服务器将无法启动。我想不出有什么变化。

我已经复制了下面的conf文件。

NameVirtualHost *
<VirtualHost *:80>
    ServerName dev.blog.slaven.net.au
    ServerAlias dev.blog.slaven.net.au
    ServerAdmin [email protected]
    DocumentRoot "c:/Project Data/OtherProjects/slaven.net.au/blog/" 
    ErrorLog "logs/blog.slaven.localhost-error.log"
    CustomLog "logs/blog.slaven.localhost-access.log" common

    <Directory "c:/Project Data/OtherProjects/slaven.net.au/blog/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
            Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

编辑:我打算添加,如果我更改NameVirtualHosts指令以指定端口,即

NameVirtualHost *:80

我收到此错误:

Only one usage of each socket address (protocol/network address/port) is normally permitted.  : make_sock: could not bind to address 0.0.0.0:80

解决方案

回答

好吧,看来问题出在分配端口的方式(和顺序)上。

基本上,*:80表示"在此配置中,将端口80用于所有主机"。当我们执行此操作时,Apache尝试将该主机绑定到0.0.0.0:80,这意味着该主机将接收通过端口80到达计算机的每个单个数据包,而不管它打算将其发送到哪个虚拟主机。只有在该配置中只有一台主机的情况下,才应该使用一次。

因此,如果在配置文件中的两个主机上使用相同的*:80指令,则服务器将不会加载,因为它将尝试两次绑定0.0.0.0:80,第二次尝试失败。 (这说明"通常只允许使用每个套接字地址(协议/网络地址/端口)。: make_sock:无法绑定到地址0.0.0.0:80")。

回答

NameVirtualHost *:80
  
  I get this error:
  
  Only one usage of each socket address (protocol/network address/port) is normally >permitted. : make_sock: could not bind to address 0.0.0.0:80

我认为这可能是因为我们还有其他东西要监听端口80。我们是否正在运行任何其他服务器(例如Skype)?

(如果是Skype:取消选中"工具>选项>高级>连接>使用端口80和443作为传入连接的替代")