web-dev-qa-db-ja.com

nginx-IPアドレスの範囲に応じてリダイレクトする方法は?

ローカルネットワーク内からのみサイトにアクセスできるようにしようとしていますが、外部ネットワークのユーザーには、他のメッセージを示す静的ページが表示されます。

これは私がやろうとしていることですが、うまくいかないようです。どこが間違っているのですか?

         if ($remote_addr != 192.168.1.0/24) {
                   rewrite ^/* /covid19 last;
         }
1
P.V.Anthony

$remote_addrは単一のIPアドレス(例:192.168.1.123)であるため、文字列192.168.1.0/24と直接比較されません。

IPアドレスを/24ブロックと比較する場合は、最初の3つの数値のみをチェックする正規表現を使用できます。

例えば:

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

詳細については このドキュメント を、ifの使用については この注意 を参照してください。

0
Richard Smith