Сделать Сервер Apache принимает запросы только к домену, а не к IP

У меня есть сервер CentOS, на котором работает Apache 2.2.15. Если IP-адрес сервера 198.51.100.4 и я пишу в браузере http: //198.51.100. 4 он размещен на моем сайте.

Я хочу предотвратить это. Я хочу, чтобы мой веб-сайт был доступен только по FQDN, например http://example.com/ .

Как я могу настроить свой сервер так, чтобы этот веб-сайт был недоступен при посещении IP-адреса?

9
задан 18 December 2015 в 05:59
3 ответа

Вы можете использовать Псевдоним * , чтобы перехватить любой другой трафик, кроме разрешенного на вашем виртуальном хосте, для этого вы должны использовать в последней позиции виртуальный хост с псевдонимом * .

Таким образом, будет обслуживаться только определенный домен.

<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 Not Acceptable ( R = 406 ).

Здесь вы можете найти список кодов перенаправления: https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

7
ответ дан 2 December 2019 в 22:23

Вы можете добавить виртуальный хост по умолчанию, который выдает ошибку «отказано» или что-то еще. Когда браузер затем приходит на ваш веб-сервер без хоста в URL-адресе, который соответствует любым строкам ServerName или ServerAlias ​​ на других виртуальных хостах, он будет обслуживаться виртуальным хостом по умолчанию.

Итак. в конфигурации apache:

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>
11
ответ дан 2 December 2019 в 22:23

Вам понадобится такое правило перезаписи:

 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^mywebsite.com$
 RewriteRule /.* https://mywebsite.com/ [R]
1
ответ дан 2 December 2019 в 22:23

Теги

Похожие вопросы