Вопрос или проблема
У меня есть сервер на AWS, который обслуживает ряд веб-сайтов. Установлен также Webmin.
В Apache, когда я пытаюсь создать веб-сайт, например, ferrari.example.com
, я получаю ошибку Запрещено. У вас нет разрешения на доступ к этому ресурсу.
при запросе через веб-браузер.
Это НЕ проблема с разрешениями файлов, потому что, если я использую другое доменное имя (указывающее на тот же каталог), все работает нормально.
Это НЕ проблема конфигурации Apache, потому что, если я изменяю только доменное имя (и никаких других настроек конфигурации), все работает нормально.
Да, у меня есть правильная запись DNS, указывающая ferrari.example.com
на мой сервер.
Нет, в Apache нет других сайтов, конфликтующих с этим доменным именем. Я выполнил grep -r ferrari *
в /etc/apache
и нашел только этот один сайт.
Есть ли у кого-нибудь другие идеи, почему это не работает?
<VirtualHost *:80>
DocumentRoot /var/www/ferrari.example.com
ServerName ferrari.example.com
<Directory /var/www/ferrari.example.com>
AllowOverride All
Options None
Require all granted
</Directory>
</VirtualHost>
Я думаю, что у меня НЕ установлен SELinux.
Уровень логирования debug показывает эти ошибки:
[Thu Sep 19 19:13:00.740101 2019] [authz_core:debug] [pid 31107] mod_authz_core.c(809): [client 204.112.96.198:13742] AH01626: authorization result of Require all denied: denied, referer: http://ferrari.example.com/
[Thu Sep 19 19:13:00.740130 2019] [authz_core:debug] [pid 31107] mod_authz_core.c(809): [client 204.112.96.198:13742] AH01626: authorization result of <RequireAny>: denied, referer: http://ferrari.example.com/
[Thu Sep 19 19:13:00.740139 2019] [authz_core:error] [pid 31107] [client 204.112.96.198:13742] AH01630: client denied by server configuration: /var/www/html/favicon.ico, referer: http://ferrari.example.com/
Я столкнулся с той же проблемой.
Вот как я это решил
Откройте файл apache2.conf, используя редактор nano.
sudo nano /etc/apache2/apache2.conf
Замените общие настройки каталога на следующие.
<Directory />
#Options FollowSymLinks
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order deny,allow
Require all granted
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
Убедитесь, что ваш файл конфигурации виртуального хоста в директории /etc/apache2/sites-available
выглядит следующим образом
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port t$
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName example.com (введите сюда ваше доменное имя)
ServerAdmin webmaster@localhost
DocumentRoot /home/username/myapp (введите сюда корневую директорию вашего приложения)
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Перезапустите сервис Apache2
sudo systemctl restart apache2
Это все.
Надеюсь, это поможет
Ответ или решение
Для решения проблемы с ошибкой "Forbidden. You don’t have permission to access this resource." при доступе к домену ferrari.example.com на вашем сервере Apache, следует рассмотреть несколько важных аспектов конфигурации сервера.
Основные причины проблемы
-
Недостаточные права на доступ: Несмотря на указанные в вопросе права доступа, ошибки в логах указывают на проблему с авторизацией. Это может быть связано с неправильной настройкой
mod_authz_core
. -
Конфликт конфигураций: Даже если потенциальный конфликт в конфигурации был исключен, возможно, что причина кроется в менее очевидных аспектах конфигурации Apache.
-
DNS и сетевые настройки: Убедитесь, что DNS записи корректно указывают на ваш сервер и обновлены. Это касается таких деталей, как IP-адрес и правильность субдоменов.
Решение проблемы
-
Проверка конфигурации Apache:
Убедитесь, что ваш виртуальный хост для
ferrari.example.com
в файле конфигурации/etc/apache2/sites-available/
таков:<VirtualHost *:80> ServerName ferrari.example.com DocumentRoot /var/www/ferrari.example.com <Directory /var/www/ferrari.example.com> AllowOverride All Options Indexes FollowSymLinks Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
-
Проверка главного конфигурационного файла:
Откройте файл
/etc/apache2/apache2.conf
и убедитесь, что глобальные параметры настроены корректно:<Directory /> AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> AllowOverride All Options Indexes FollowSymLinks Require all granted </Directory>
Важно, чтобы в глобальных настройках
/var/www/
были разрешены все запросы. -
Рестарт Apache: После внесения изменений обязательно перезапустите Apache для применения конфигураций:
sudo systemctl restart apache2
-
Проверка логов: Подключитесь к логам ошибок Apache (
/var/log/apache2/error.log
) и просмотрите, нет ли дополнительных подсказок о причине проблемы. -
Проверка SELinux и других средств безопасности: Убедитесь, что SELinux, если он установлен, не блокирует ваш доступ. Это можно проверить с помощью:
sestatus
При соблюдении перечисленных шагов вы сможете устранить проблему с доступом к ресурсу вашего домена в Apache на AWS.