Вопрос: Сделать сервер Apache только для запросов, а не для IP-адресов


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

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

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


8
2017-12-14 11:24


Источник


Возможный дубликат Apache принимает запросы на другие серверы? - Jenny D
Хотя вопрос не совсем совпадает с дубликатом, с которым я связан, ответ на этот вопрос также является ответом на этот вопрос. - Jenny D
Мне любопытно, почему вы это сделаете. обратный DNS - это вещь. - njzk2


Ответы:


Вы можете использовать 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 будут отменены trafic.

Чтобы отменить трафик, вы можете использовать перенаправление на - а затем добавить код ошибки, например, я использовал RewriteRule для перенаправления на 406 Не допускается (R=406).

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


6
2017-12-14 16:45



Благодаря! Я попробовал ваш метод, и он работает. Но я немного изменился. Я создал новый виртуальный хост, и я ставлю в качестве ServerName IP-адрес сервера + RewriteRule :) - antiks


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

Итак, в вашей конфигурации apache:

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

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>

11
2017-12-14 13:05





Вам нужно правило перезаписи следующим образом:

 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^mywebsite.com$
 RewriteRule /.* https://mywebsite.com/ [R]

0
2017-12-14 12:09



Это не делает то, о чем попросил ОП. - Lightness Races in Orbit