Apache2 403 ошибка с несколькими виртуальными хостами
У меня есть некоторые проблемы с моей установкой Apache2.
На прошлой неделе из-за сбоя жесткого диска я сделал общее резервное копирование, заменил жесткий диск на новый и снова установил все SO (Debian 7 AMD64) и Apache2. Я восстановил все данные из резервной копии на новый диск.
Я снова настроил виртуальный хост с такой же конфигурацией, как и при последней установке, но на этот раз, когда я пытаюсь получить доступ к любому виртуальному хосту, кроме того, на котором размещен только статический контент.
Нет ошибок в файлах ошибок Apache, а также нет ошибок или предупреждений при запуске Apache. Я также проверил разрешения и владельцев в файловой системе.
Вот мои файлы конфигурации:
apache2.conf
ServerRoot "/etc/apache2"
LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
DefaultType None
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel debug
Include mods-enabled/*.load
Include mods-enabled/*.conf
Include ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Include conf.d/
Include httpd.conf
httpd.conf
<VirtualHost x.x.x.x:80>
DocumentRoot /home/www/hostname.domain.tld
ServerName hostname.domain.tld
ServerAdmin soporte@domain.tld
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www/hostname.domain.tld>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost x.x.x.x:80>
DocumentRoot /home/www/static.domain.tld
ServerName static.domain.tld
ServerAdmin soporte@domain.tld
<Directory /home/www/static.domain.tld>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost x.x.x.x:80>
DocumentRoot /home/www/mail.anijapan.com
ServerName mail.domain.tld
ServerAdmin soporte@domain.tld
<Directory /home/www/mail.domain.tld>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost x.x.x.x:80>
DocumentRoot /home/www/bugs.domain.tld
ServerName bugs.domain.tld
ServerAdmin soporte@domain.tld
<Directory /home/www/bugs.domain.tld>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
ports.conf
NameVirtualHost x.x.x.x:80
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Я пробовал разные вещи, смотрел в Google и т. Д. Безрезультатно.
Кто-нибудь имеет представление о моей проблеме?
Спасибо!
2 ответа
Я наконец достиг Apache, работающий без 403 ошибок. Причина ошибки 403 была очень простой, и она не находится на сервере.
Для управления доменом DNS я использую CloudFlare. Чтобы обеспечить обслуживание, когда сервер HD был изменен, я перевожу все веб-сайты на другой сервер с новым IP. После того, как я установил ОС поверх нового HD, я переместил веб-сайты на новый диск со спасательного сервера, и я изменил на CloudFlare IP-адрес для записей DNS на старый, но CloudFlare здесь не работает, потому что они этого не делают. по внутренней ошибке выкладываю новый IP адрес. Я видел, что создание traceroute (очень глупое решение, но эффективное), чтобы увидеть реальное конечное назначение записи A, а не конечное назначение, которое появляется в CloudFlare.
Чтобы заставить CloudFlare использовать правильную запись A, я удалил ее, сохранил изменения и затем добавил запись A к правильному IP-адресу. Как только я это сделал, все стало работать правильно.
Запустите apache следующим образом: передний план + отладка, если он не может записывать логи по какой-то причине, так он и запустится.
. /etc/apache2/envvars
apache2 -e debug -DFOREGROUND
Другой рекомендацией было бы посмотреть на /var/log/messages и /var/log/syslog, но вы, вероятно, уже сделали это. Больше информации на этой странице zroger.com