Apache如何确定FQDN?

3
我正在使用Apache2,当重新加载/重启服务器时,我会收到以下警告信息:

apache2: Could not reliably determine the server's fully qualified domain name, using (我的FQDN) for ServerName

一切都正常工作,但我试图弄清是什么导致了这个错误。我正在查看源代码以查找是否能找到它,但由于我的C不是很好...

一些注释:
  • 如果我更改系统主机名,Apache会使用新主机名
  • 我设置了一个ServerName; 它与主机名相同
  • 我有一个静态的唯一IP - dig(主机名)返回(我的IP),dig -x(我的IP)返回(主机名)
  • 我的hosts文件是正确的

版本信息:

Apache/2.2.9
Linux 2.6.24-23-xen x86_64
描述:Debian GNU/Linux 5.0(lenny)

有什么想法吗?
3个回答

8
你确定你有一个正确的ServerName指令,且在任何<VirtualHost>块之外吗?(当然,每个<VirtualHost>块内也需要一个ServerName)。
当Apache给出这个错误信息时,通常意味着它无法找到整个服务器的ServerName。如果你确实已经正确设置了该指令,我无法想象为什么Apache仍然会抱怨...

2
嘿,你说得对 - 我没有考虑到这一点,现在问题解决了。那么,“可靠地确定fqdn”真的意味着“在我的配置文件中找到一个默认/全局ServerName”吗? - Peter Stone
1
@Peter Stone 如果您在配置中没有设置ServerName,Apache将尝试通过反向IP查找来确定它。如果指定的IP没有PTR记录,则Apache会给出该错误消息。 - guns
@guns 请看我的原始帖子 - "dig -x (我的 IP)返回(主机名)"。dig -x 返回 PTR。 - Peter Stone
好的,事实上这就是它的意思——主站点配置与server/vhost.c中的任何其他虚拟主机一样被解析:“if (!s->server_hostname) { s->server_hostname = ap_get_local_host(p); }”(ap_get_local_host打印错误)。我想这只是一个稍微令人困惑的错误消息。 - Peter Stone

1
在Debian中,主机名在启动时设置,这要归功于脚本/etc/init.d/hostname.sh,该文件使用/etc/hostname文件。我们可以使用此文件来更新计算机主机名及其完全限定域名(FQDN)。
如果您的vhost中的ServerName是my-computer.my-domain.ext,请确保在/etc/hosts中复制完全相同的名称。
注意:在/etc/hosts文件中,必须遵守主机名和FQDN的顺序。首先是FQDN,然后是主机名,最后是本地主机名。
~$ echo "my-computer" > /etc/hostname
~$ echo "127.0.0.1 my-computer.my-domain.ext my-computer localhost" > /etc/hosts
~$ /etc/init.d/hostname.sh

您可以通过以下几行代码来检查更改:
~$ hostname
my-computer
~$ hostname --fqdn
my-computer.my-domain.ext

旧的主机名可能仍然存在于命令行提示符中。只需注销然后重新登录即可使其消失。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接