web-dev-qa-db-ja.com

nginxは、引用符で囲まれていない場合、ユーザーエージェントを拒否するとエラーが発生します

nginxWebサーバーを常にプローブしているユーザーエージェントを拒否しようとしています。

.confファイルにこれがある場合

 ## Block http user agent - morpheus fucking scanner ##
    if ($http_user_agent ~* (morfeus fucking scanner|ZmEu)) {
       return 403;
    }

サービスを開始すると、次のエラーが発生します。

nginx: [emerg] invalid condition "$http_user_agent" in /etc/nginx/sites-enabled/siteXXX:19
nginx: configuration file /etc/nginx/nginx.conf test failed

その周りに引用符を付けると、開始されますが、期待どおりに拒否されません。

 ## Block http user agent - morpheus fucking scanner ##
    if ($http_user_agent ~* "(morfeus fucking scanner|ZmEu)") {
       return 403;
    }

何か案は?大文字と小文字を区別しないユーザーエージェントの拒否を探しています。

3

角かっこを削除して引用符を追加するだけです。

if ($http_user_agent ~* "morfeus fucking scanner|ZmEu") {
    return 403;
}
11
mgorven

一致させようとしている文字列は何ですか?

正規表現は引用符で囲む必要がありますが、正規表現の特殊記号(、)と一致させる場合は| -\でエスケープする必要があります

これを試してください:$http_user_agent ~ "(morfeus fucking scanner)|ZmEu"

1
DukeLion