Как отладить конфигурацию виртуального хоста apache?
Снова у меня возникла проблема с моей конфигурацией виртуального хоста apache. (Конфигурация по умолчанию используется вместо моей конкретной).
Проблема на самом деле не в неправильной конфигурации, а в том, как ее решить.
Есть ли у кого-нибудь хорошие советы для быстрого решения этой проблемы?
Дополнительная информация.
Файл conf по умолчанию:
NameVirtualHost *
<VirtualHost *>
ServerAdmin [email protected]
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>
Ответы
Ответ 1
Проверка синтаксиса
Чтобы проверить файлы конфигурации на наличие синтаксических ошибок:
# Red Hat-based (Fedora, CentOS) and OSX
httpd -t
# Debian-based (Ubuntu)
apache2ctl -t
# MacOS
apachectl -t
Список виртуальных хостов
Чтобы получить список всех виртуальных хостов и их местоположения:
# Red Hat-based (Fedora, CentOS) and OSX
httpd -S
# Debian-based (Ubuntu)
apache2ctl -S
# MacOS
apachectl -S
Ответ 2
Здесь мне может помочь какая-то команда:
apachectl -t -D DUMP_VHOSTS
Вы получите список всех vhosts, вы узнаете, какой из них по умолчанию, и вы убедитесь, что ваш синтаксис верен (такой же, как apachectl configtest, предложенный yojimbo87).
Вы также узнаете, где объявляется каждый vhost. Это может быть удобно, если ваши файлы конфигурации беспорядочны.;)
Ответ 3
Если вы пытаетесь отладить конфигурацию своего виртуального хоста, вы можете найти полезный переключатель командной строки Apache -S. То есть введите следующую команду:
httpd -S
Эта команда выдает описание того, как Apache проанализировал файл конфигурации. Тщательное изучение IP-адресов и имен серверов может помочь выявить ошибки конфигурации. (См. Документы для httpd для других параметров командной строки).
Ответ 4
Сначала проверьте config файлы для синтаксических ошибок с apachectl configtest
, а затем посмотрите на ошибку apache logs.
Ответ 5
У меня был новый файл конфигурации VirtualHost, который не отображался при использовании команды apachectl -S
. После долгих царапин я понял, что мой файл не имеет суффикса ".conf". Как только я переименовал файл с этим суффиксом, мой Vhost начал показывать и работать!
Ответ 6
У меня недавно были некоторые проблемы с VirtualHost. Я использовал a2ensite
для включения хоста, но перед запуском перезапуска (который мог бы убить сервер при сбое) я запустил
apache2ctl -S
Что дает вам некоторую информацию о том, что происходит с вашими виртуальными хостами. Это не идеально, но это помогает.
Ответ 7
Я нашел свою ошибку, я не добавил имя файла журнала: ErrorLog/var/log/apache2
И этот путь: Справочник "/usr/share/doc/"
Не содержит источников веб-сайта.
После того как я изменил эти два, все сработало.
Интересно, что apache не выдавал никаких ошибок, просто не открывал мой сайт на моей Mac OS Sierra.