У меня есть текущая конфигурация почтового клиента моего веб-сайта:
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /var/www/mailclient>
AllowOverride All
</Directory>
DocumentRoot /var/www/mailclient
ServerName mail.*
ServerAlias mail.*
</VirtualHost>
Когда я пытаюсь достичь https: // mail.domain1.com или https: // mail.domain2.com, это работает нормально.
Но когда я пытаюсь перейти на https: // domain1.com или https: // sub.domain1.com, я все еще вижу веб-почтовый клиент, но не хочу видеть ничего, кроме 404 или чего-то подобного. Итак, как я могу ограничить этот virtualHost только для определенного поддомена?
Apache будет обслуживать виртуальный хост по умолчанию (*), если не сможет найти нужный.
Вы могли бы использовать vhost по умолчанию чтобы обойти это.
<VirtualHost _default_:443>
RedirectMatch permanent ^/?(.*) http://mymainwebsite.com/$1
</VirtualHost>
Это предотвратит его появление, если кто-то подключится к порту 443 с IP-адресом или другим поддоменом.
Настройте виртуальный хост по умолчанию, который будет возвращать ошибку. Он должен быть выше вашего текущего виртуального хоста, чтобы использовать его по умолчанию, но ниже NameVirtualHost
конфигурация.
NameVirtualHost *:443
<VirtualHost *:443>
ServerName default.filler.name
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /var/www/mailclient>
AllowOverride All
</Directory>
DocumentRoot /var/www/mailclient
ServerName mail.*
ServerAlias mail.*
</VirtualHost>
Будет 403 вместо 404. Достаточно близко?