NGINX運用とセキュリティ設定

NGINXのログ解析やセキュリティ設定について、以下の内容を説明します。

アクセスログの解析コマンド

以下は、アクセスログから重要な情報を抽出するためのコマンド例です。

  • ユニークIPアドレス数のカウント:
    awk '{print $1}' ログファイル | sort | uniq | wc -l
    
  • 特定時間帯のアクセス件数:
    grep "07/Apr/2023:0[4-5]" ログファイル | awk '{print $1}' | sort | uniq -c | wc -l
    
  • 最も頻繁にアクセスした上位100IP:
    awk '{print $1}' ログファイル | sort | uniq -c | sort -nr | head -n 100
    

パフォーマンス分析

NGINXのパフォーマンスを向上させるために、以下の設定を行います。

  • レスポンスタイムが3秒を超えるページを表示:
    awk '($NF > 3) {print $7}' ログファイル | sort | uniq -c | sort -nr | head -n 20
    

CORS(クロスオリジンリソース共有)設定

異なるドメイン間でのリソース共有を許可するために、CORSヘッダーを設定します。

location / {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}

HTTPSリダイレクトの自動化

HTTP接続をHTTPSに自動的にリダイレクトする設定例:

proxy_redirect http:// https://;

NGINXの基本設定

NGINXの基本的な設定ファイルの一部を示します。

user nginx;
worker_processes auto;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
}

NGINX変数の一覧

NGINXで利用可能な主要な変数のいくつかを挙げます。

  • $request_uri: リクエストのURI部分を取得。
  • $remote_addr: クライアントのIPアドレスを取得。
  • $status: HTTPステータスコードを取得。

セキュリティルール

SQLインジェクション攻撃やクロスサイトスクリプティング(XSS)対策のための設定例:

if ($request_uri ~ "(%27|')union") { return 403; }

日志ローテーションと検証

logrotateを使用して日志を分割し、その整合性を確認します。

/var/log/nginx/*.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        systemctl reload nginx
    endscript
}

反向プロキシの推奨設定

反向プロキシとしてNGINXを使用する際の設定例:

proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

タグ: nginx ログ解析 CORS HTTPS セキュリティ

7月6日 17:02 投稿