Назад | Перейти на главную страницу

nginx - как перенаправить в зависимости от диапазона IP-адресов?

Я пытаюсь сделать сайт доступным только из локальной сети, и люди из внешней сети получат статическую страницу с другим сообщением.

Это то, что я пытаюсь сделать, но, похоже, это не работает. Где я ошибся?

         if ($remote_addr != 192.168.1.0/24) {
                   rewrite ^/* /covid19 last;
         }

В $remote_addr один IP-адрес (например, 192.168.1.123), поэтому он не будет напрямую сравниваться со строкой 192.168.1.0/24.

Если вы сравниваете IP-адрес с /24 блок, вы можете использовать регулярное выражение, которое проверяет только первые три числа.

Например:

if ($remote_addr !~ "^192\.168\.1\.") { ... }

Видеть этот документ для деталей, и это предупреждение по использованию if.