# Nginx cho luatvukhang.com. Chép sang /etc/nginx/sites-available/luatvukhang
#
#   sudo cp deploy/nginx.conf /etc/nginx/sites-available/luatvukhang
#   sudo ln -s /etc/nginx/sites-available/luatvukhang /etc/nginx/sites-enabled/
#   sudo nginx -t && sudo systemctl reload nginx
#
# Đây là cấu hình HTTP cho lần cài đầu. Chạy certbot sau đó, nó sẽ tự thêm khối
# HTTPS và chuyển hướng 80 → 443:
#
#   sudo certbot --nginx -d luatvukhang.com -d www.luatvukhang.com

server {
    listen 80;
    listen [::]:80;
    server_name luatvukhang.com www.luatvukhang.com;

    # Canonical của website là https://luatvukhang.com (không có www). Gom về một
    # tên miền để công cụ tìm kiếm không thấy hai bản sao của cùng nội dung.
    if ($host = www.luatvukhang.com) {
        return 301 https://luatvukhang.com$request_uri;
    }

    # Ảnh biên tập viên tải lên giới hạn 8 MB; chừa dư cho phần bao gói multipart.
    client_max_body_size 9m;

    # Chặn đứt kết nối treo thay vì giữ tiến trình Node bận vô hạn.
    proxy_connect_timeout 10s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host              $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host  $host;

        # GHI ĐÈ, không nối thêm. Dùng $proxy_add_x_forwarded_for sẽ giữ lại
        # chuỗi do khách tự khai, và khách có thể mạo địa chỉ để vượt hạn mức
        # gửi biểu mẫu. Chỉ khi ghi đè như dưới đây mới được đặt
        # TRUST_PROXY_HEADERS=true trong .env.
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Real-IP       $remote_addr;

        # Next.js dùng streaming; tắt buffer để trang hiện dần đúng như thiết kế.
        proxy_buffering off;
    }

    # Tệp tĩnh có mã băm trong tên, đổi nội dung là đổi tên, nên cache lâu được.
    location /_next/static/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        add_header Cache-Control "public, max-age=31536000, immutable";
    }

    # Bảng quản trị không nên nằm trong bộ nhớ đệm dùng chung nào.
    location /admin {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host              $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For   $remote_addr;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_buffering off;
    }
}
