如何调试apache虚拟主机配置?

如何调试apache虚拟主机配置?,apache,debugging,virtualhost,Apache,Debugging,Virtualhost,我的apache虚拟主机配置再次出现问题。(使用默认配置,而不是我的特定配置) 问题不在于错误的配置,而在于如何解决它 有没有人有好的建议来快速解决此类问题 更多信息 默认的conf文件如下所示: NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory />

我的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>
NameVirtualHost*
服务器管理员webmaster@localhost
DocumentRoot/var/www/
选项如下符号链接
不允许超限
选项索引跟随符号链接多视图
不允许超限
命令允许,拒绝
通融
ScriptAlias/cgi-bin//usr/lib/cgi-bin/
不允许超限
选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
通融
ErrorLog/var/log/apache2/error.log
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级别警告
CustomLog/var/log/apache2/access.log组合
服务器签名
别名/doc/“/usr/share/doc/”
选项索引多视图跟随符号链接
不允许超限
命令拒绝,允许
全盘否定
允许从127.0.0.0/255.0.0.0::1/128开始
不适用的虚拟主机配置如下:

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>

代理主机
ProxyPass/http://ip.ip.ip.ip:8088/
ProxyPassReverse/http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com
首先使用
apachectl configtest
检查文件的语法错误,然后查看apache错误。

语法检查 要检查配置文件的语法错误,请执行以下操作:

#基于红帽的(Fedora、CentOS)和OSX
httpd-t
#基于Debian的(Ubuntu)
apache2ctl-t酒店
#马科斯
apachectl-t
列出虚拟主机 要列出所有虚拟主机及其位置,请执行以下操作:

#基于红帽的(Fedora、CentOS)和OSX
httpd-S
#基于Debian的(Ubuntu)
apache2ctl-S酒店
#马科斯
apachectl-S

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

httpd -S

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

我认为以下命令可能会有所帮助:

apachectl -t -D DUMP_VHOSTS
您将获得所有vhost的列表,您将知道哪一个是默认的vhost,并且您将确保语法正确(与yojimbo87建议的apachectl configtest相同)


您还将知道每个vhost的声明位置。如果你的配置文件乱七八糟,它会很方便。;)

我最近和一个虚拟主机发生了一些问题。我使用了
a2ensite
来启用主机,但在运行重新启动(如果失败会导致服务器死机)之前,我运行了


这将为您提供有关虚拟主机的一些信息。它并不完美,但很有帮助。

我有一个新的VirtualHost配置文件,在使用
apachectl-s
命令时没有显示该文件。经过一番努力,我意识到我的文件没有后缀“.conf”。一旦我用这个后缀重命名了文件,我的Vhost就开始显示并工作了

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

我换了这两个之后,一切都好了。
有趣的是,apache没有发布任何错误,只是没有在Mac OS Sierra上悄悄打开我的网站。

一个非常重要的工具是

apachectl -t -D DUMP_INCLUDES
它向我展示了我正在修理的文件 实际上是由一个本身不包含的文件包含的


谢谢大家

我没有语法错误,因为我的服务器重新启动并重新加载配置时没有任何问题。我不知道在哪个日志中可以找到有关配置的详细信息。错误日志通常位于“/var/log/apache2/Error.log”文件中。您也可以使用“apache2ctl-t”。在Apache2中,这是
apache2ctl-S
或者是
APACHE\u RUN\u USER=www data APACHE\u RUN\u GROUP=www data/usr/sbin/Apache2-S
-S
-t-D DUMP\u VHOSTS
的同义词,因此这两个都是Windows的同义词(如果您正在使用xampp),您在:\xampp\apache\bin for Wamp:
c:\\Wamp\\bin\\apache\\apache2.4.9\\bin\\httpd.exe-S中有这些相同的命令,非常有用,谢谢,但这还不够,我在vhost中遇到了一些问题,它应该被使用,而不是,我不知道为什么,我希望获得有关apache如何选择vhost的日志。当虚拟主机或主主机实际访问时,是否有任何方法让apache向错误文件或其他地方添加消息,以提供有关选择哪个主机的动态信息?我已经尝试过LoadModule log\u debug\u modules/mod\u log\u debug.so。。。LogMessage“Debug 1”hook=all回答得很好,请帮助我查找类似问题。所有语法和-S vhost都正确,但服务的站点仍然错误。原来是:80和:443具有相同的访问日志文件,这似乎混淆了问题。每个端口都有单独的文件,站点开始工作。DNS检查也很有用,例如flushdns