Назад | Перейти на главную страницу

Конфигурация подкаталогов Apache2

В настоящее время я настраиваю веб-сайт на Ubuntu 18.04 с Apache2.4.

Я пытаюсь ограничить доступ HTTP (S) к моим поддоменам определенными IP-адресами. Эти поддомены используются либо для тестов разработки, либо являются инструментами администратора (phpMyAdmin и т. Д.), Поэтому я определенно не хочу, чтобы эти поддомены были общедоступными.
Я также хочу, чтобы domain.com был общедоступным.

Каково текущее состояние сайта:

Каков ожидаемый результат:

Это моя конфигурация:

Записи DNS:

Name   Type   TTL  Target
        A     300  ServerIP
sub1   CNAME  300  domain.com
sub2   CNAME  300  domain.com
www    CNAME  300  domain.com

apache2.conf:

[...]
<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/html/sub1>
    AllowOverride All
    Require all denied
</Directory>
[...]

/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ServerName domain.com
    ServerAlias domain.com

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =domain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

/etc/apache2/sites-available/sub1.domain.com.conf

<VirtualHost *:80>
    ServerName sub1.domain.com
    DocumentRoot /var/www/html/sub1
    <Directory /var/www/html/sub1>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all denied
    </Directory>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =sub1.domain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Символические ссылки сделаны из /etc/apache2/sites-available/sub*.domain.com.conf к /etc/apache2/sites-enabled

Я тоже не понимаю, если я попытаюсь добавить файл .htaccess в /var/www/html/php56, не учитывается, несмотря на AllowOverride All

Еще одна вещь, которую я пытаюсь сделать, - это перенаправить запросы domain.com/sub1 на sub1.domain.com вместо выдачи ошибки 403, но без файла .htaccess, поэтому я минимизирую количество файлов конфигурации.

Примечание. В целях тестирования я намеренно установил Require all denied вместо того Require ip x.x.x.x

Что я делаю не так?

Если я забыл предоставить необходимую информацию, сообщите мне.

Спасибо за вашу помощь

ОБНОВИТЬ:

Благодаря совету Тома я понял, в чем дело. В моем /etc/apache2/sites-available/sub1.domain.com.conf У меня было перенаправление с HTTP на HTTPS. Собственно, Let's Encrypt создал /etc/apache2/sites-available/sub1.domain.com-le-ssl.conf файл (во время настройки сертификата я выбрал принудительное перенаправление HTTPS), и в этом файле были Require all granted Итак, этот файл перезаписывал мой sub1.domain.com.conf файл.

Наконец, я изменил настройку каталогов в соответствии с ответом Тома - так стало намного понятнее, спасибо!
Это также решило мой вопрос о перенаправлении, поскольку теперь моя корневая папка для domain.com /var/www/domain.com/www

Я бы не стал делать корневой каталог субдомена вложенной папкой корневого домена. Вместо того:

/var/www/html/
    - sub1/
    - sub2/
    - sub3/

Сам бы сделал так:

/var/www/domain.com/
    - www/ (the root)
    - sub1/
    - sub2/
    - sub3/

Это значительно упрощает ограничение доступа к файлам. В вашей текущей настройке, возможно, доступ ограничен VirtualHost но к тем же данным можно получить доступ, перейдя через корневой домен: http://www.example.com/sub1/data.