# docker-local/nginx/nginx.conf # # ローカル試験用 nginx 設定 # AWS 本番と同じ振り分け構造を再現する # # 現段階の目的: # 全リクエストを既存試験環境 Java API にそのまま流し、 # nginx を経由しても動作が変わらないことを確認する user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 256; } http { include /etc/nginx/mime.types; default_type application/octet-stream; # ------------------------------------------------- # ログフォーマット # AWS 本番と同じ JSON 形式 # ------------------------------------------------- log_format main_json escape=json '{' '"time":"$time_iso8601",' '"remote_addr":"$remote_addr",' '"request_method":"$request_method",' '"request_uri":"$request_uri",' '"status":$status,' '"body_bytes_sent":$body_bytes_sent,' '"request_time":$request_time,' '"upstream_addr":"$upstream_addr",' '"upstream_status":"$upstream_status",' '"upstream_response_time":"$upstream_response_time",' '"api_backend":"$api_backend",' '"content_type":"$content_type",' '"http_user_agent":"$http_user_agent"' '}'; access_log /var/log/nginx/access.log main_json; sendfile on; keepalive_timeout 65; # XML-RPC は POST ボディが大きくなることがある client_max_body_size 10m; # ------------------------------------------------- # Upstream 定義 # ------------------------------------------------- # 既存試験環境 Java API # ※ .env の値は docker-compose では直接 nginx.conf に展開されない # → scripts/entrypoint.sh で envsubst を使って解決 upstream upstream_java { server ${JAVA_API_HOST}:${JAVA_API_PORT}; keepalive 8; } server { listen 80; # ヘルスチェック location /health { return 200 '{"status":"ok","backend":"nginx-local"}'; add_header Content-Type application/json; } # デバッグ用: 現在の振り分け先を確認 location /debug/routing { return 200 '{"request_uri":"$request_uri","api_backend":"$api_backend"}'; add_header Content-Type application/json; } # API エンドポイント location / { # 現段階: 全て Java へ proxy_pass http://upstream_java; # ヘッダ設定 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Original-URI $request_uri; # XML-RPC の Content-Type をそのまま通す proxy_set_header Content-Type $content_type; # タイムアウト設定 proxy_connect_timeout 10s; proxy_send_timeout 30s; proxy_read_timeout 30s; # バッファリング設定 proxy_buffering on; proxy_buffer_size 8k; proxy_buffers 8 8k; } } }