mcpField
N
nginx-request-logging

nginx-request-logging

github.com/letta-aiクラウド・DevOps15242 回インストール4 週間前に更新
リポジトリ

nginx-request-logging について

Nginx ウェブサーバーの管理者向け設定ガイドです。カスタムログ、リクエスト制限、エラーページの設定に加え、設定の検査と動作確認の手順を扱います。

主な機能

  1. 01既存設定とシステム状態の確認
  2. 02カスタムログ形式の設定
  3. 03レート制限ゾーンとルールの設定
  4. 04カスタムエラーページの作成
  5. 05設定テストとサービス動作の確認

活用シーン

  1. 01Nginx サイト設定の導入
  2. 02サービスへのアクセスログ追加
  3. 03レート制限の設定と確認
  4. 04標準外ポートやエラーページの設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/letta-ai/skills --skill nginx-request-logging

インストール後、Claude Code で/nginx-request-loggingを入力して読み込まれたか確認します。

詳細

Nginx リクエストログ設定

このスキルでは、カスタムログ、レート制限、エラーハンドリングを設定して Nginx Web サーバーを構成する方法を説明します。

このスキルを使用する場面

次の作業を行う場合に、このスキルを適用します。

  • Nginx のインストールと設定
  • カスタムログ形式の設定
  • レート制限の実装
  • カスタムエラーページ(404、500 など)の作成
  • 標準以外のポートでリッスンする Nginx の設定

設定前の分析

Nginx の設定を変更する前に、次の作業を行います。

  1. 既存の設定構造を確認する

    • /etc/nginx/nginx.conf を読み、現在の設定を把握します
    • 既存の include ディレクティブを確認し、ファイル構成を把握します
    • ログ形式、レート制限ゾーン、その他のグローバル設定が定義されている場所を特定します
  2. システムの状態を確認する

    • Nginx がすでにインストールされているか確認します:which nginx または nginx -v
    • Nginx がすでに実行中か確認します:pgrep nginx または ps aux | grep nginx
    • 対象ポートが使用可能か確認します:ss -tlnp | grep <port> または netstat -tlnp | grep <port>
  3. 元の設定をバックアップする

    • 変更前にバックアップを作成します:cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

設定方法

ディレクトリ構造

Nginx の設定は通常、次の階層構造になっています。

  • /etc/nginx/nginx.conf - メイン設定(グローバル設定、ログ形式、レート制限ゾーン)
  • /etc/nginx/conf.d/ - サイト固有の設定(server ブロック)
  • /etc/nginx/sites-available/ および /etc/nginx/sites-enabled/ - 代替のサイト管理方式(Debian 系)
設定の配置ガイドライン
設定の種類場所理由
ログ形式の定義nginx.conf(http ブロック)server ブロックで使用する前に定義する必要があります
レート制限ゾーンnginx.conf(http ブロック)ゾーンは複数の server ブロックで共有されます
server ブロックconf.d/*.confモジュール化され、管理が容易です
カスタムエラーページserver ブロックまたは location ブロックコンテキストに応じて設定します
レート制限の設定

レート制限には、次の 2 つの設定が必要です。

  1. ゾーン定義(nginx.conf の http ブロック内):

    limit_req_zone $binary_remote_addr zone=zonename:10m rate=10r/s;
    
  2. ゾーンの適用(server ブロックまたは location ブロック内):

    limit_req zone=zonename burst=5 nodelay;
    
カスタムログ形式

http ブロック内でカスタムログ形式を定義します。

log_format custom_format '$remote_addr - $remote_user [$time_local] '
                         '"$request" $status $body_bytes_sent '
                         '"$http_referer" "$http_user_agent"';

server ブロックで適用します。

access_log /var/log/nginx/custom_access.log custom_format;

サービス管理

Nginx のサービス管理方法は環境によって異なります。

環境起動コマンド再読み込みコマンド停止コマンド
systemdsystemctl start nginxsystemctl reload nginxsystemctl stop nginx
直接実行nginxnginx -s reloadnginx -s stop
Docker/コンテナーnginx -g 'daemon off;'nginx -s reloadnginx -s quit

重要:起動または再読み込みの前に、必ず設定をテストしてください。

nginx -t

検証方法

基本機能
curl -s http://localhost:<port>/
curl -s -o /dev/null -w "%{http_code}" http://localhost:<port>/nonexistent
レート制限の検証

レート制限を発動させるには、リクエストを同時に送信する必要があります。逐次的にリクエストを送信しても、レート制限を超過しません。

正しい方法(並列リクエスト):

seq 20 | xargs -P 20 -I {} curl -s -o /dev/null -w "%{http_code}\n" http://localhost:<port>/

誤った方法(レート制限は発動しません):

for i in {1..20}; do curl -s http://localhost:<port>/; done  # Too slow, sequential
ログの検証
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

よくある落とし穴

  1. ログ形式が見つからない:ログ形式は、server ブロックから参照する前に nginx.conf で定義する必要があります

  2. レート制限が発動しない:逐次的なリクエストでは遅すぎます。xargs -P などを使って並列リクエストを送信してください

  3. 設定構文エラー:起動または再読み込みの前に、必ず nginx -t を実行してください

  4. ポートがすでに使用中:新しいポートを設定する前に、ss -tlnp で確認してください

  5. systemctl を使用できない:コンテナーや最小構成の環境では、nginx コマンドを直接使用してください

  6. デフォルトサイトとの競合:カスタム設定を作成する場合は、デフォルトサイトの設定を削除するか、無効にしてください。

    rm -f /etc/nginx/sites-enabled/default
    
  7. ディレクトリが存在しない:設定ファイルを書き込む前に、必要なディレクトリが存在することを確認してください。

    ls -la /etc/nginx/conf.d/
    

実行効率

  • ファイル操作をまとめる:可能な場合は、複数の静的ファイル(index.html、404.html など)を並行して作成します
  • 検証手順をまとめる:1 回の検証で複数のエンドポイントをテストします
  • 事前に検証を計画する:実装前にテスト戦略を決定します
  • 冪等性のあるコマンドを使用する:既存ファイルや存在しないファイルを適切に処理できるよう、mkdir -p や rm -f を優先します

ワークフローの例

  1. システムの状態を確認します(Nginx のインストール状況、実行状況、ポートの空き状況)
  2. 既存の nginx.conf の構成を確認します
  3. 設定をバックアップします
  4. 必要なディレクトリと静的コンテンツを作成します
  5. グローバル設定(ログ形式、レート制限ゾーン)を nginx.conf に適用します
  6. conf.d/ にサーバー設定を作成します
  7. 競合するデフォルト設定を削除します
  8. nginx -t で設定をテストします
  9. Nginx サービスを起動または再読み込みします
  10. すべての機能(メインページ、エラーページ、レート制限、ログ)を検証します

コメント