Все мои файлы принадлежат apache: apache. Все каталоги имеют 770 разрешений, а файлы - 660 разрешений. Мой исходный виртуальный хост вроде бы в порядке, но второй выдает ошибку 403 на всех путях.
Вот моя текущая конфигурация в /etc/httpd/conf/httpd.conf
<Directory "/var/www/site1">
Options Indexes FollowSymLinks
AllowOverride All
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory "/var/www/site2">
Options Indexes FollowSymLinks
AllowOverride All
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<VirtualHost *:80>
ServerAdmin serveradmin@domain.com
DocumentRoot /var/www/site1/
ServerName site1.domain.com
ErrorLog /var/log/httpd/site1.error.log
CustomLog /var/log/httpd/site1.access.log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin serveradmin@domain.com
DocumentRoot /var/www/site2/
ServerName site2.domain.com
ErrorLog /var/log/httpd/site2.error.log
CustomLog /var/log/httpd/site2.access.log common
</VirtualHost>
Скорее всего, виноват здесь SELinux.
Каким-то образом родительский контекст не был унаследован правильно при создании файлов / каталогов в /var/www
каталог.
Неявная установка контейнера с помощью restorecon
или явно с chcon
должен исправить проблему.
Следите за линиями в /var/log/audit.log
при устранении неполадок в настройках SELinux.
Чтобы решить проблему, запустите:
# restorecon -R /var/www
как корень. Это восстановит /var/www
контекст, определяемый системной политикой SELinux для /var/www
и все папки и файлы под ним.
Дополнительную информацию о SELinux (поиск и устранение неисправностей) можно найти Вот, Вот и Вот.