Apache сообщает “Запрещено. У вас нет разрешения на доступ к этому ресурсу.” для конкретного домена.

Вопрос или проблема

У меня есть сервер на 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, следует рассмотреть несколько важных аспектов конфигурации сервера.

Основные причины проблемы

  1. Недостаточные права на доступ: Несмотря на указанные в вопросе права доступа, ошибки в логах указывают на проблему с авторизацией. Это может быть связано с неправильной настройкой mod_authz_core.

  2. Конфликт конфигураций: Даже если потенциальный конфликт в конфигурации был исключен, возможно, что причина кроется в менее очевидных аспектах конфигурации Apache.

  3. DNS и сетевые настройки: Убедитесь, что DNS записи корректно указывают на ваш сервер и обновлены. Это касается таких деталей, как IP-адрес и правильность субдоменов.

Решение проблемы

  1. Проверка конфигурации 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>
  2. Проверка главного конфигурационного файла:

    Откройте файл /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/ были разрешены все запросы.

  3. Рестарт Apache: После внесения изменений обязательно перезапустите Apache для применения конфигураций:

    sudo systemctl restart apache2
  4. Проверка логов: Подключитесь к логам ошибок Apache (/var/log/apache2/error.log) и просмотрите, нет ли дополнительных подсказок о причине проблемы.

  5. Проверка SELinux и других средств безопасности: Убедитесь, что SELinux, если он установлен, не блокирует ваш доступ. Это можно проверить с помощью:

    sestatus

При соблюдении перечисленных шагов вы сможете устранить проблему с доступом к ресурсу вашего домена в Apache на AWS.

Оцените материал
Добавить комментарий

Капча загружается...