Я использую веб-сервер apache в CentOS, и мне нужно отключить возможность доступа людей к веб-сайту с помощью IP-адреса сервера в веб-браузере. Я хочу, чтобы, когда кто-то пытается перейти по IP-адресу, он получал запрещенное сообщение об ошибке.
Какие конфигурации были бы необходимы для этого?
apache-2.2
centos
Амр Эльхедевы
источник
источник
Этого можно добиться с помощью mod_rewrite (либо в
.htaccess
файле, либо в контексте сервера по умолчанию, либо в отдельном VirtualHost, гдеServerName
IP-адрес хоста):Это говорит о том, что если заголовок HTTP_HOST совпадает с IP-адресом 1.2.3.4, то любой запрос должен быть удовлетворен с помощью
403 Forbidden
. На любой запрос, имеющий другой заголовок HTTP_HOST (например, запрос с фактическим доменным именем, а не IP-адресом), это не должно повлиять.источник
Вы не можете заблокировать прямой доступ по IP. Вы должны разрешить соединение, но затем решить, что с ним делать. Это может быть возвращение 403, 404 или перенаправление их на нужную страницу. Вы можете сделать это с помощью mod_rewrite.
Это будет соответствовать заголовку HTTP HOST, переданному веб-клиентом. Все остальные запросы пройдут.
Тем не менее, вы можете нормализовать свои URL-адреса для целей SEO.
При таком подходе вы переписываете все, что не соответствует желаемому результату.
Ссылка: https://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#canonicalurl
Ссылка: http://en.wikipedia.org/wiki/URL_normalization
источник
Это решение не охватывает все случаи.
Замените любое число или точку в URL-адресе IP его% ##, например, 1 на% 31 ... 8 на% 38, и вы получите IP, а не URL-адрес домена.
Предположим, это плохой IP, используемый для облегчения объяснения: 123.45.6.789
Вы должны использовать 2 варианта для всех цифр и точек: точка - это% 2E, а 0..9 - это% 30 ..% 39
Уродливо, его можно уменьшить с помощью {1,3} и ограничить допустимым IP-адресом, но, как и для вашего IP-адреса, делать это не нужно.
Не забудьте порты типа ": 80". HTTP_HOST содержит его, а SERVER_NAME не является надежным.
источник