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

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

WBOY
WBOY転載
2023-05-13 10:25:051278ブラウズ

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 までご連絡ください。