【问题标题】:How to change ServerName in apache server?如何更改 apache 服务器中的 ServerName?
【发布时间】:2016-12-28 16:55:49
【问题描述】:

我从http://www.apachelounge.com/ 下载了Apache 二进制文件,安装后,在第220 行的httpd.conf 文件中,我将#ServerName www.example.com:80 更改为ServerName www.example.com:80。现在一切正常。服务器使用域名localhostlocalhost:80 也会自动重定向到 localhost

既然ServerNamewww.example.com:80 那么为什么服务器在localhost 而不是www.example.com:80 上工作?

如果我将www.example.com:80 的每个实例都更改为mylocalserver:80,那么为什么apache 服务器不能在mylocalserver:80 上工作?

【问题讨论】:

  • 您了解 DNS 的工作原理吗?你需要它来设置你想要的方式并理解你面临的问题

标签: apache server localhost


【解决方案1】:

名称解析中的 DNS 发生在您到达 Apache HTTPD 服务器之前。当您在浏览器或任何地方输入名称时,您是否到达您的服务器仅取决于该分辨率以及是否解析了您配置的服务器的 ip,因此与您访问它的 httpd 的配置方式无关有一个名字,而你没有另一个名字。

对于 httpd,它适用于您可能想要的任何名称,因为 HTTPD 不知道您的 DNS 设置。它侦听 IP 地址,如果请求到达服务器(通过它绑定到的 ip:port),然后它才会检查请求中的“Host”http 标头以确定哪个虚拟主机(如果不止一个并且已正确配置)以传递请求。

所以你可以使用任何你喜欢的名字,重要的是你如何解决它以及你最终使用哪个 ip:port 组合。

【讨论】:

  • 如果localhost被预先配置为apache服务器的IP地址,那我为什么要取消#ServerName www.example.com:80的注释呢?这条线的目的是什么?
  • 你真的不需要取消注释。必须始终为所有虚拟主机指定 ServerName。这就是 HTTPD 针对请求的 Host 标头进行检查的内容,因此,如果请求到达 www.example.com 并到达服务器,httpd 将知道要将其传送到哪个虚拟主机(如果配置了多个),如果只有 1 个虚拟主机,无论其中的名称如何,所有请求都将落在该虚拟主机中。
  • 我没有虚拟主机。如果我不取消注释 example.com 行,则会收到错误 Could not reliably determine the server's fully qualified domain name...
  • 这更像是一个警告而不是真正的错误。这只是意味着您没有在服务器配置上下文中设置具有可解析名称的 ServerName。
【解决方案2】:

您的问题并没有提供很多信息,但我还是会尽力回答。

还有 localhost:80 会自动重定向到 localhost。

这可能不是重定向,而是您的浏览器删除了 :80 部分,因为它是网络上的默认端口。

既然 ServerName 是 www.example.com:80 那么为什么服务器在 localhost 而不是 www.example.com:80 上工作?

可能是因为localhostwww.example.com 都引用了Web 服务器,而Web 服务器对它们都有响应。 localhost 通常配置为 127.0.0.1,因此将参考您的本地设置。

如果我将 www.example.com:80 的每个实例都更改为 mylocalserver:80,那么为什么 apache 服务器不能在 mylocalserver:80 上运行?

mylocalserver 可能没有指代任何东西。尝试编辑您的hosts 文件(*nix 上的/etc/hosts%SYSTEM%\Drivers\etc\hosts)以包含mylocalserver 以将其引用到127.0.0.1,就像localhost 一样。

您遇到的问题似乎源于对域名的误解。域名转换为 IP 地址。 www.example.com 转换为 Internet 上的某个 IP 地址,但 localhost 通常转换为 127.0.0.1,就像在 hosts 文件中定义的那样。您也可以只使用ServerName 变量中的IP 地址,例如127.0.0.1

【讨论】:

  • ...因为 localhost 和 www.example.com 都引用了 web 服务器,而 web 服务器对它们都有响应... 如果它们都引用到同一台服务器,那么为什么www.example.com 不打开与localhost 打开的文件相同的文件? localhostapache 文件中定义为 127.0.0.1 的位置在哪里?
  • @user31782 与其他答案一样,cmets 建议多了解一点 DNS 知识。 Apache 没有定义域名及其 IP 地址。我已经编辑了我的答案以包含更多信息。
  • @user31782 我以为www.example.com 是您的示例域名。
  • www.example.com 不是我的域。它用于httpd.conf 文件的第 220 行。该行默认注释为#。如果不删除#,我将无法运行apache。现在我想知道www.example.com是否与localhost无关,那么第220行必须取消注释吗?
  • 你能告诉%SYSTEM%文件夹在窗口10中的位置吗?
猜你喜欢
  • 2012-07-02
  • 2017-01-06
  • 2017-02-13
  • 2021-08-28
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多