Разрешение доступа только к локальной сети в NGINX

У меня есть один физический сервер, на котором запущено несколько блоков server в nginx, соответствующих разным субдоменам. Один из них я хотел бы, чтобы он был доступен только с устройств в той же локальной сети, что и сервер. Я знаю, что теоретически это можно сделать с помощью

allow 192.168.1.0/24;
deny all;

внутри блока location. Однако, когда я действительно пытаюсь получить доступ к серверу с локального устройства, запрос отклоняется. Глядя на журналы доступа, это связано с тем, что запрос отображается как исходящий от внешнего IP-адреса моей сети, а не от внутреннего IP-адреса устройства. Как я могу это исправить?


person Sean    schedule 11.08.2018    source источник
comment
Использует ли устройство общедоступное имя сервера? Устройству необходимо будет подключиться к внутреннему IP-адресу сервера, чтобы избежать маршрутизации через внешний IP-адрес.   -  person Richard Smith    schedule 12.08.2018
comment
хм да. Можно ли разрешить только локальные устройства, даже если они обращаются к ним через общедоступное имя? С динамическим IP добавление allow [external ip]; не кажется отличным решением   -  person Sean    schedule 12.08.2018
comment
Вы решили это? У меня такое же требование. Благодарю вас!   -  person Martin    schedule 12.04.2020


Ответы (1)


Скорее всего, ваша проблема связана с тем, что вы используете внешний DNS, который направляет ваш запрос на ваш общедоступный IP-адрес, а затем обратно на ваш веб-сайт. Настройте внутренний DNS и укажите разрешение сайта напрямую на внутренний IP-адрес.

Затем, как вы сказали, вы можете сделать следующее:

cat << 'EOF' >/etc/nginx/private.conf
allow 192.168.1.0/24;
deny all;
EOF

site.conf:

include                 /etc/nginx/private.conf;
person FreeSoftwareServers    schedule 20.04.2020