Проблема конфигурации Apache2 — запретить с внешнего IP, разрешить по имени хоста

Проблема конфигурации Apache2 — запретить с внешнего IP, разрешить по имени хоста

Я уже пару дней с этим возился и не могу заставить это работать. У меня есть 2 сайта, включенных через их собственные файлы конфигурации. site1.conf и site2.conf

На каждом сайте есть правила перезаписи от Let's Encrypt, которые направляют их на site*-le-ssl.conf

Возникла проблема: когда я ввожу свой публичный IP-адрес в браузер, он загружает site1, хотя я хочу, чтобы была ошибка типа «запрещено» или что-то другое, а не загружался мой site1.

Сайт 2, похоже, загружается только при указании его имени хоста.

site1.conf — это

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName site1.mydomian.com
     ServerAlias site1.mydomian.com
     DocumentRoot /var/www/site1
     <Directory /var/www/site1>
         Options FollowSymLinks
         AllowOverride All
         Require all granted
         Header always set X-Frame-Options "SAMEORIGIN"
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/site1_error.log
     CustomLog ${APACHE_LOG_DIR}/site1_access.log combined

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

site1-le-ssl.conf — это

<IfModule mod_ssl.c>
<VirtualHost *:443>
     ServerAdmin [email protected]
     ServerName site1.mydomian.com
     ServerAlias site1.mydomian.com
     DocumentRoot /var/www/site1/
     <Directory /var/www/site1>
         Options FollowSymLinks
         AllowOverride All
         Require all granted
         Header always set X-Frame-Options "SAMEORIGIN"
     </Directory>

        ErrorLog ${APACHE_LOG_DIR}/site1_error.log
        CustomLog ${APACHE_LOG_DIR}/site1_access.log combined

        SSLCertificateFile /etc/letsencrypt/live/site1.mydomian.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/site1.mydomian.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>

</IfModule>

Даже когда я отключил site1.conf a2dissite site1и перезагрузил Apache, этот сайт все равно загружался при доступе по публичному IP.

В файле apache2.conf я изменил это на Require all denied, но загрузка site1 все равно продолжалась.

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

Когда я переименовал /var/www/site1 в /var/www/site1.old, а затем зашел по публичному IP, я получил страницу «Запрещено», чего я и ожидал, заходя с IP.

Есть идеи, как включить site1 и сделать так, чтобы к нему можно было получить доступ по имени хоста site1.mydomain.com, а не по публичному IP-адресу?

Связанный контент