Как отладить конфигурацию виртуального хоста apache?

еще раз, у меня проблема с моей конфигурацией виртуального хоста 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>

7 ответов


проверить синтаксис

чтобы проверить файлы конфигурации на наличие синтаксических ошибок:

# Fedora, RHEL, CentOS, OSX
httpd -t

# Debian, Ubuntu
apache2ctl -t

# MacOS
apachectl -t

список виртуальных хостов

чтобы перечислить все виртуальные хосты и их местоположения:

# Fedora, RHEL, CentOS, OSX
httpd -S

# Debian, Ubuntu
apache2ctl -S

# MacOS
apachectl -S

вот команда, которая, я думаю, может помочь:

apachectl -t -D DUMP_VHOSTS

вы получите список всех vhosts, вы узнаете, какой из них является стандартным, и вы убедитесь, что ваш синтаксис правильный (такой же, как apachectl configtest, предложенный yojimbo87).

вы также будете знать, где объявлен каждый vhost. Это может быть удобно, если ваши файлы конфигурации беспорядок. ;)


Если вы пытаетесь отладить конфигурацию виртуального хоста, вы можете найти переключатель командной строки Apache-S полезным. То есть, введите следующую команду:

httpd -S

эта команда выведет описание того, как Apache проанализировал файл конфигурации. Тщательное изучение IP-адресов и имен серверов может помочь выявить ошибки конфигурации. (См. документы для файл httpd


первый проверить config файлы для синтаксических ошибок с apachectl configtest а затем посмотрите на ошибку apache журналы.


У меня был новый файл конфигурации VirtualHost, который не отображался при использовании . После долгого чесания головы я понял, что в моем файле нет суффикса ".conf". Как только я переименовал файл с этим суффиксом, мой Vhost начал показывать и работать!


недавно у меня были некоторые проблемы с VirtualHost. Я использовал a2ensite для перемещения включить хост, но перед запуском перезапуска (который убьет сервер при сбое) я запустил

apache2ctl -S

что дает вам некоторую информацию о том, что происходит с вашими виртуальными хостами. Это не идеально, но помогает.


Я нашел свою ошибку, я не добавить имя файла журнала : ErrorLog /var / log / apache2
И этот путь: Каталог " / usr / share/doc/" Не содержит источников веб-сайта.

после того, как я изменил эти два, все сработало. Интересно, что apache не выдавал никаких ошибок, просто не открывал мой сайт молча на моем Mac OS Sierra.