我从http://www.apachelounge.com/下载了Apache二进制文件。安装完成后,在第220行的httpd.conf
文件中,我将#ServerName www.example.com:80
更改为ServerName www.example.com:80
。现在一切正常。服务器使用域名localhost
。此外,localhost:80
会自动重定向到localhost
。
由于
ServerName
是www.example.com:80
,那么为什么服务器可以使用localhost
而不是www.example.com:80
?如果我将
www.example.com:80
的每个实例都更改为mylocalserver:80
,那么为什么apache服务器不会在mylocalserver:80
上运行?
答案 0 :(得分:1)
你的问题没有提供大量的信息,但无论如何我都会尝试回答。
localhost:80也会自动重定向到localhost。
这可能不是重定向,但是您的浏览器会移除localhost
部分,因为它是网络上的默认端口。
由于ServerName是www.example.com:80,那么为什么服务器在localhost而不是www.example.com:80上工作?
可能是因为www.example.com
和localhost
都引用了Web服务器,而Web服务器都响应了它们。 127.0.0.1
通常配置为mylocalserver
,因此会引用您当地的设置。
如果我将www.example.com:80的每个实例更改为mylocalserver:80,那么为什么apache服务器不能在mylocalserver上运行:80?
hosts
可能不是指任何东西。尝试修改/etc/hosts
文件({nix,%SYSTEM%\Drivers\etc\hosts
上的mylocalserver
)以包含127.0.0.1
,以便localhost
将其引荐至www.example.com
。< / p>
您遇到的问题似乎源于对域名的误解。域名转换为IP地址。 localhost
转换为互联网上的某个IP地址,但127.0.0.1
通常转换为hosts
,就像ServerName
文件中定义的那样。您也可以使用127.0.0.1
变量中的IP地址,例如ngLink
。
答案 1 :(得分:1)
在您到达Apache HTTPD服务器之前,DNS就像名称解析一样。当您在浏览器或任何地方放置名称时,您是否到达服务器只取决于该分辨率,如果解析了您配置的服务器的IP,那么它与httpd的配置方式无关只有一个名字,你不会与另一个名字相关。
至于httpd,它适用于您可能想要的任何名称,因为HTTPD不了解您的DNS设置。它侦听一个IP地址,如果一个请求到达服务器(通过ip:端口绑定到),那么它只会检查&#34; Host&#34;请求中的http标头决定了哪个虚拟主机(如果有多个虚拟主机并且已正确配置)来传递请求。
所以你可以使用你喜欢的任何名字,你解决它的方式以及最终的ip:port组合。