【问题标题】:How to debug an apache virtual host configuration?如何调试 apache 虚拟主机配置?
【发布时间】:2011-07-25 08:57:21
【问题描述】:

再一次,我的 apache 虚拟主机配置有问题。 (使用默认配置,而不是我的具体配置)。

问题不是真正的错误配置,而是如何解决它。

有没有人有好的建议可以快速解决这类问题?

更多信息。

默认的conf文件是这个:

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

不适用的虚拟主机配置是这个:

<VirtualHost *:*>

ProxyPreserveHost On
ProxyPass / http://ip.ip.ip.ip:8088/
ProxyPassReverse / http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com

</VirtualHost>

【问题讨论】:

标签: apache debugging virtualhost


【解决方案1】:

语法检查

检查配置文件的语法错误:

# Red Hat-based (Fedora, CentOS), Arch-based and OSX
httpd -t

# Debian-based (Ubuntu)
apache2ctl -t

# MacOS
apachectl -t

列出虚拟主机

列出所有虚拟主机及其位置:

# Red Hat-based (Fedora, CentOS), Arch-based and OSX
httpd -S

# Debian-based (Ubuntu)
apache2ctl -S

# MacOS
apachectl -S

【讨论】:

  • -S-t -D DUMP_VHOSTS 的同义词,所以这两个是相同的
  • 对于 Windows,(如果您使用的是 xampp),您可以在以下位置使用相同的命令:\xampp\apache\bin
  • 对于 Wamp:c:\\wamp\\bin\\apache\\apache2.4.9\\bin\\httpd.exe -S
  • 这非常有用,谢谢,但这还不够,我在使用 vhost 时遇到了一些问题,应该使用它,但我不知道为什么,我希望获取有关 apache 如何选择的日志虚拟主机。
  • 当实际访问虚拟主机或主主机时,有什么方法可以让 Apache 在错误文件或其他地方添加一条消息,提供有关选择哪个主机的动态信息?我试过 LoadModule log_debug_module modules/mod_log_debug.so ... LogMessage "Debug 1" hook=all
【解决方案2】:

这是我认为可能会有所帮助的命令:

apachectl -t -D DUMP_VHOSTS

您将获得所有虚拟主机的列表,您将知道哪个是默认虚拟主机,并确保您的语法正确(与 yojimbo87 建议的 apachectl configtest 相同)。

您还将知道每个虚拟主机的声明位置。如果您的配置文件一团糟,它会很方便。 ;)

【讨论】:

    【解决方案3】:

    如果您尝试调试虚拟主机配置,您可能会发现 Apache -S 命令行开关很有用。也就是说,键入以下命令:

    httpd -S
    

    此命令将输出 Apache 如何解析配置文件的描述。仔细检查 IP 地址和服务器名称可能有助于发现配置错误。 (有关其他命令行选项,请参阅httpd 程序的文档)。

    【讨论】:

    • 在 Apache2 中这是apache2ctl -S
    • 或者APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S
    【解决方案4】:

    首先检查config 文件中apachectl configtest 的语法错误,然后查看apache 错误logs

    【讨论】:

    • 我没有语法错误,因为我的服务器重新启动并重新加载配置没有任何问题。我不知道在哪个日志中可以找到有关我的配置的详细信息。
    • 错误日志通常位于'/var/log/apache2/error.log'文件中。
    • 你也可以使用“apache2ctl -t”。
    【解决方案5】:

    我有一个新的 VirtualHost 配置文件,在使用 apachectl -S 命令时没有显示。经过多次挠头后,我意识到我的文件没有后缀“.conf”。一旦我用那个后缀重命名了文件,我的 Vhost 就开始显示和工作了!

    【讨论】:

      【解决方案6】:

      我最近在使用 VirtualHost 时遇到了一些问题。我使用a2ensite 启用主机,但在运行重新启动之前(这会在失败时终止服务器)我跑了

      apache2ctl -S
      

      它为您提供了一些有关您的虚拟主机正在发生的事情的信息。这并不完美,但有帮助。

      【讨论】:

        【解决方案7】:

        我发现自己的错误,我没有添加日志文件名: 错误日志 /var/log/apache2
        而这条路: 目录“/usr/share/doc/” 不包含网站来源。

        在我更改了这两个之后,一切正常。 有趣的是,apache 没有发出任何错误,只是没有在我的 Mac OS Sierra 上静默打开我的网站。

        【讨论】:

        • 很好的答案,帮我找到类似的问题。所有语法和 -S 虚拟主机都正确,但仍提供错误的站点。原来是 :80 和 :443 具有相同的访问日志文件,这似乎使事情变得混乱。每个端口都有单独的文件,站点开始工作。
        【解决方案8】:

        一个非常重要的工具是

        apachectl -t -D DUMP_INCLUDES
        

        它向我展示了我正在修复和修补的文件 实际上被包含在一个本身不包含在内的文件中。

        谢谢大家

        【讨论】:

          猜你喜欢
          • 2021-03-31
          • 2011-05-04
          • 2017-06-14
          • 2012-08-22
          • 2011-10-13
          • 1970-01-01
          • 2013-07-12
          相关资源
          最近更新 更多