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;