У меня есть сервер CentOS с Apache 2.2.15. Если IP-адрес сервера 198.51.100.4 и я пишу в браузере http://198.51.100.4 это идет на моем сайте.
Я хочу предотвратить это. Я хочу, чтобы мой веб-сайт был доступен только по FQDN, т.е. http://example.com/.
Как я могу настроить свой сервер таким образом, чтобы веб-сайт был недоступен при посещении IP-адреса?
Вы можете добавить виртуальный хост по умолчанию, который выдает ошибку «отказано» или что-то еще. Когда браузер затем приходит на ваш веб-сервер без хоста в URL-адресе, который соответствует любому ServerName
или ServerAlias
линии на других виртуальных хостах будут обслуживаться виртуальным хостом по умолчанию.
Итак, в вашей конфигурации apache:
<VirtualHost *:80>
ServerName default
DocumentRoot /var/www/default
...
</VirtualHost>
<VirtualHost *:80>
ServerName mywebsite.com
...
</VirtualHost>
Ты можешь использовать Alias *
чтобы поймать любой другой трафик, кроме разрешенного на вашем виртуальном хосте, для этого вы должны использовать в последней позиции виртуальный хост с *
как псевдоним.
Таким образом, будет обслуживаться только определенный домен.
<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/default
...
</VirtualHost>
<VirtualHost *:80>
ServerName another.mywebsite.com
DocumentRoot /var/www/another
...
</VirtualHost>
# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>
В моем примере будут разрешены только mywebsite.com и another.mywebsite.com, трафик для всех других доменов или IP будет отменен.
Для отмены трафика вы можете использовать перенаправление на -
а затем добавить код ошибки, например, я использовал RewriteRule для перенаправления на 406 неприемлемо (R=406
).
Здесь вы можете найти список кодов редиректа: https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP
Вам нужно такое правило перезаписи:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^mywebsite.com$
RewriteRule /.* https://mywebsite.com/ [R]