# gw.conf — nginx làm API Gateway cho Traffic Lab (Bài 4). # # Khác gì lb.conf? lb.conf chỉ chia tải cho một pool đồng nhất. File này thêm các # việc thuộc tầng ứng dụng: TLS termination, định tuyến theo path, phục vụ file tĩnh # ngay tại gateway, và xử lý header chuyển tiếp cho ĐÚNG. upstream api_pool { server app1:3000 max_fails=2 fail_timeout=5s; server app2:3000 max_fails=2 fail_timeout=5s; server app3:3000 max_fails=2 fail_timeout=5s; keepalive 64; } # Khối chung cho mọi route, dùng lại ở cả cổng HTTP và HTTPS để so sánh # chi phí TLS trên cùng một đường xử lý (Bài 4, mục 4.2). map $host $unused_placeholder { default 0; } server { # Cổng HTTP thuần — chỉ để ĐO chi phí TLS bằng cách so với cổng 8443. # Production KHÔNG nên mở cổng này (hoặc chỉ dùng để redirect sang HTTPS). listen 8081; server_name _; access_log /var/log/nginx/access.log lbfmt; include /etc/nginx/snippets/gw-routes.conf; } server { listen 8443 ssl; http2 on; server_name _; # Chứng chỉ TỰ KÝ, chỉ dùng cho lab. Sinh bằng lệnh trong README. ssl_certificate /etc/nginx/certs/lab.crt; ssl_certificate_key /etc/nginx/certs/lab.key; # TLS 1.2 + 1.3 để có thể đo chênh lệch giữa hai phiên bản nếu muốn. ssl_protocols TLSv1.2 TLSv1.3; # Bật session cache: nếu TẮT, mỗi kết nối mới phải bắt tay đầy đủ và chi phí # TLS đo được sẽ cao hơn nhiều. Đây là một trong những tinh chỉnh đáng giá nhất. ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; access_log /var/log/nginx/access.log lbfmt; include /etc/nginx/snippets/gw-routes.conf; }