repuve-backend-v1/Docker/nginx/nginx-main.conf
2026-02-20 17:17:35 -06:00

77 lines
3.6 KiB
Plaintext

user nginx;
worker_processes auto;
# Log de errores con máximo nivel de detalle
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# ─── FORMATO DE LOG FORENSE EXTENDIDO ───────────────────────────────────────
log_format forensic_main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" "$http_x_real_ip" '
'rt=$request_time ' # Tiempo total de la petición
'uct="$upstream_connect_time" ' # Tiempo de conexión upstream
'uht="$upstream_header_time" ' # Tiempo de cabeceras upstream
'urt="$upstream_response_time" ' # Tiempo de respuesta upstream
'cs=$upstream_cache_status ' # Estado de caché
'ssl_protocol="$ssl_protocol" ' # Protocolo SSL usado
'ssl_cipher="$ssl_cipher" ' # Cifrado SSL
'ssl_session_id="$ssl_session_id" ' # ID sesión TLS (rastreo)
'conn=$connection ' # ID de conexión
'conn_reqs=$connection_requests ' # Peticiones por conexión
'pipe=$pipe ' # Pipelining (y/n)
'host="$host" ' # Host solicitado
'server_name="$server_name" '
'scheme="$scheme" '
'request_method="$request_method" '
'request_uri="$request_uri" '
'server_port="$server_port" '
'http_version="$server_protocol" '
'bytes_sent=$bytes_sent ' # Total bytes enviados
'request_length=$request_length ' # Tamaño de la petición
'req_id="$request_id"'; # ID único por petición
# Formato adicional para headers sensibles / seguridad
log_format forensic_headers
'$remote_addr [$time_local] req_id="$request_id" '
'Authorization="$http_authorization" '
'Cookie="$http_cookie" '
'Content-Type="$content_type" '
'Content-Length="$content_length" '
'Accept="$http_accept" '
'Accept-Language="$http_accept_language" '
'Accept-Encoding="$http_accept_encoding" '
'Origin="$http_origin" '
'Sec-Fetch-Site="$http_sec_fetch_site" '
'Sec-Fetch-Mode="$http_sec_fetch_mode" '
'Sec-Fetch-Dest="$http_sec_fetch_dest" '
'X-Custom-Header="$http_x_custom_header"';
# ─── ARCHIVOS DE LOG ────────────────────────────────────────────────────────
access_log /var/log/nginx/access.log forensic_main buffer=16k flush=1s;
access_log /var/log/nginx/headers.log forensic_headers buffer=16k flush=1s;
error_log /var/log/nginx/error.log debug;
# ─── OPCIONES GENERALES ─────────────────────────────────────────────────────
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
server_tokens off; # No revelar versión en respuestas (buena práctica)
# Añadir request_id único a cada petición
add_header X-Request-ID $request_id always;
include /etc/nginx/conf.d/*.conf;
}