Вопрос

До недавнего времени у меня было несколько виртуальных сайтов, настроенных так:

<VirtualHost 127.0.0.1:1234>
    ...

Это прекрасно работает для тестирования на моей локальной машине, где я использую рабочий стол Linux. Чтобы проверить, как MS и Explorer отображают мои страницы с моего ноутбука с Windows, я изменил это на

<VirtualHost *:1234>
    ...

Это также хорошо работает, вызывая сайт с http: // [mylinuxservername]: 1234 на моем ноутбуке. IE. Однако я хочу ограничить этот подстановочный знак локальной сетью. При подключении любого ip, например 192.nnn.nnn.nnn или 192. *. *. *, Где подстановочный знак находится выше, выдается 403 Запрещено на машине с Windows. Локальный сервер все еще отлично работает на моем компьютере с Linux:

<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
    ...

или

<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
    ...

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

Это было полезно?

Решение

Параметры VirtualHost - это локальные адреса, которые вы слушаете, а не удаленные.

В Apache 2.4 и новее используйте Require директива:

Require ip 127.0.0.0/8
Require ip 192.0.0.0/8

Если вы используете Apache 2.2 или более раннюю версию, используйте authz_host конфигурация:

Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16

Это также может работать в Apache 2.4, но заказать и Allow устарели .

Другие советы

Просто заметка на случай, если сюда придут такие нубы, как я:)

  

Apache HTTP Server настраивается путем размещения директив в виде простого текста   конфигурационные файлы. Основной файл конфигурации обычно называется   httpd.conf.    Основные файлы конфигурации

Для версии 2.4

  

Директивы Allow, Deny и Order, предоставляемые mod_access_compat,   устарели и уйдут в будущей версии. Вам следует избегать   использовать их, и избегать устаревших руководств, рекомендующих их использование.    Контроль доступа

Require ip 127.0.0.0/8
Require ip 192.0.0.0/8

или (не совсем то же самое)

Require ip 127.0
Require ip 192.168

Используйте iptables для ограничения доступа к самой машине. Первая команда разрешит HTTP-трафик из любой сети в диапазоне 192 (обратите внимание, что я думаю, что вам нужно 192.168, чтобы действительно быть локальным, но я могу ошибаться). Вторая команда просто отбрасывает пакеты из других источников для порта 80

iptables -I 1 INPUT -s 192.0.0.0/8 -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


iptables -I 2 INPUT -p tcp --dport 80 -m state --state NEW -j DROP 

Затем на своем виртуальном хосте вы можете выполнить < VirtualHost *: 80 >

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top