ホームページ > 運用・保守 > Nginx > Nginx で特定のユーザー エージェントをインターセプトする方法

Nginx で特定のユーザー エージェントをインターセプトする方法

WBOY
リリース: 2023-05-13 10:25:05
転載
1316 人が閲覧しました

nginx で特定のユーザー エージェントをブラックリストに登録する

ユーザー エージェント ブロック リストを構成するには、Web サイトの nginx 構成ファイルを開き、サーバー定義セクションを見つけます。このファイルは、nginx 構成または Linux バージョンに応じて、異なる場所に配置される場合があります (例: /etc/nginx/nginx.conf、/etc/nginx/sites-enabled/、/usr /local/) nginx/conf/nginx.conf、/etc/nginx/conf.d/)。

コードをコピーします。 コードは次のとおりです。

サーバー {
listen 80default_server;
server_name xmodulo.com;
root /usr/share/nginx/html;
....
}

構成ファイルを開いてサーバー セクションを見つけたら、そのセクション内のどこかに次の if ステートメントを追加します。

コードをコピーします。 コードは次のとおりです。

サーバー {
listen 80default_server;
server_name xmodulo.com;
root /usr/share/nginx/html;
# 大文字と小文字を区別するマッチング
if ($http_user_agent ~ (antivirx|arian) {
return 403;
}

大文字と小文字を区別しないマッチング

コードをコピーコードは次のとおりです:

if ($http_user_agent ~* (netcrawl|npbot|malicious)) {
return 403; #ご想像のとおり、これらの if ステートメントは正規表現を使用して不正なユーザーと一致します。文字列を検索し、一致したオブジェクトに 403 http ステータス コードを返します。$http_user_agent は、ユーザー エージェント文字列を含む http リクエスト内の変数です。' ~' 演算子は、ユーザー エージェント文字列に対して大文字と小文字を区別した一致を行います。一方、' ~*' 演算子は、大文字と小文字を区別しない一致を行います。'|' 演算子は論理 OR であるため、多数のユーザー エージェント キーワードを入力して、それらをすべてブロックできます。

設定ファイルを変更した後は、リロードする必要がありますnginx でブロックを有効にします:

 $ sudo /path/to/nginx -s reload
ログイン後にコピー
ログイン後にコピー

wget テストのユーザー エージェント ブロックの「--user -agent」オプションを指定したコマンドを使用することでこれを行うことができます。

 $ wget --user-agent "malicious bot" http://<nginx-ip-address>
ログイン後にコピー

nginx でユーザー エージェント ブラックリストを管理する

Nginx で特定のユーザー エージェントをインターセプトする方法

これまで、nginx で一部のユーザー エージェントの http リクエストをブロックする方法を説明してきました。ブロック?

ユーザー エージェントのブラックリストは非常に大きくなるため、nginx のサーバー部分にブラックリストを置くのは得策ではありません。代わりに、ブロックされたすべてのユーザー エージェントをリストする別のファイルを作成できます。たとえば、/etc/nginx /useragent.rules を作成し、ブロックされたすべてのユーザー エージェントを次の形式で定義するマップを定義しましょう。

  $ sudo vi /etc/nginx/useragent.rules
ログイン後にコピー

コードをコピーします。コードは次のとおりです。

## #地図$ $ http_user_agent $ badagent {

;

-センシティブな正規表現。 「デフォルト 0」行は、他のファイルにリストされていないユーザー エージェントが許可されることを意味します。

次に、Web サイトの nginx 構成ファイルを開き、http を含むセクションを見つけて、http セクションのどこかに次の行を追加します。

次のようにコードをコピーします。

Http {
.....
Include /etc/nginx/useraquest.rules
}

## 注意include ステートメントはサーバー セクションの前に指定する必要があることに注意してください (このため、これを http セクションに追加しました)。

ここで、サーバーを定義する nginx 構成セクションを開き、次の if ステートメントを追加します。

コードをコピーします。コードは次のとおりです。

server {

....

 $ sudo /path/to/nginx -s reload
ログイン後にコピー
ログイン後にコピー

これで、/etc/nginx/useragent.rules にリストされているキーワードを含むユーザー エージェントは、nginx によって自動的に禁止されます。

以上がNginx で特定のユーザー エージェントをインターセプトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート