29

特定の IP のみがアクセスできるように nginx プロキシ サーバーを構成したいと考えています。

私の知る限り、これは通常、許可リストと拒否リストを使用して構成ファイルで行われますが、ホワイトリストが非常に大きいため、可能であれば別のオプションが必要です。また、これを Web サイトにリンクする必要があります。これにより、ユーザーがログインしたときに、ユーザーの IP が変更された場合に更新できるようになります。

つまり、ホワイトリストに登録されたユーザーはプロキシ サーバーを使用できますが、何らかの理由でユーザーの IP が変更された場合でも、ユーザーはサイトにログインしてホワイトリストに登録された IP を更新できます。

助けが必要な場所

nginx が htaccess や mysql などの外部ソースから IP ホワイトリストを読み取る方法はありますか? もしそうなら、簡単にリンクして自動的に更新できるように、そのリストに最適な形式は何ですか? ユーザーが自分のアカウントにログインすると、ホワイトリストが自動的に更新されるように、サイトを専門的に構築することを計画しています。したがって、ホワイトリストをユーザー アカウントと統合しやすくするために、ホワイトリストをデザイナーが作業するのに最適な形式にしたいと考えています。

4

2 に答える 2

42

この問題を解決できる方法は 2 つあります。

  1. 分離された構成の許可リスト:すべての一般的な NginX インストールで動作します

    すべての許可ステートメントを、許可ステートメントのみを含む単純なテキスト ファイルにサイトごとに配置できます。クライアントのサーバーブロックの下にそれを含めます。リストを変更するには、必要に応じてスクリプトを使用します。最後に、許可リストを更新するたびに nginx 設定を再読み込みします (再起動しません)。これは次のようになります。

    cat /var/www-allow/client1-allow.conf
    allow 192.168.1.1;
    allow 10.0.0.1;
    
    cat /etc/nginx/sites/client1.conf
    ...
    server {
        include /var/www-allow/client1-allow.conf;
        deny all;
    }
    
    echo Test NginX configuration
    nginx -t
    
    echo Reload NginX configuration (**adjust for your setup**)
    service nginx reload
    
  2. 組み込み Lua を使用: NginX のカスタム コンパイルが必要

    サードパーティの組み込み Lua アドオン モジュールを使用して、ソースから NginX を再コンパイルします。lua スクリプトを使用して、サポートされていない IP アドレスを積極的に拒否します。の 2 番目の例を参照してくださいaccess_by_lua。アドオンを使用する方法はさまざまです。access_by_lua_filelua スクリプトを外部の場所に配置するために使用することをお勧めします。

これらのアプローチは両方とも、まだあなたの側でいくらかの努力を必要とします. 特定の目的のためにドロップイン ソリューションが既に利用可能であるとは思えません。

于 2012-12-17T19:38:06.150 に答える