Bỏ qua để đến nội dung

Cấu hình ứng dụng cho web

Khi ai đó mở web của bạn, request đi qua Cloudflare, tới máy chủ trung gian của Zyhost, rồi mới vào ứng dụng trên server bằng http thường. Nhờ vậy bạn không phải lo chứng chỉ https, nhưng ứng dụng cần biết mình đang đứng sau một lớp chuyển tiếp (reverse proxy) để chạy đúng.

Ứng dụng phải nghe trên 0.0.0.0 và cổng trong biến môi trường SERVER_PORT. Nếu nghe trên 127.0.0.1, Zyhost không kết nối vào được và web sẽ hiện trang Server chưa phản hồi.

index.js
const express = require('express');
const app = express();
// Tin header X-Forwarded-* từ Zyhost: req.ip là IP thật, req.secure là true.
app.set('trust proxy', true);
app.get('/', (req, res) => res.send(`Xin chào ${req.ip}`));
app.listen(process.env.SERVER_PORT, '0.0.0.0');

Vì request đi qua lớp chuyển tiếp, địa chỉ kết nối mà ứng dụng thấy là của Zyhost, không phải của người truy cập. Zyhost gửi kèm ba header để bạn biết thông tin thật:

Header Ý nghĩa
X-Forwarded-For IP thật của người truy cập
X-Forwarded-Proto Giao thức người truy cập dùng, luôn là https
X-Forwarded-Host Tên miền người truy cập mở, ví dụ shop-guest.zyhost.app

Zyhost sửa cookie ứng dụng gửi về trước khi tới trình duyệt:

  • Mọi cookie đều được thêm thuộc tính Secure, nên chỉ gửi qua https.
  • Nếu cookie có thuộc tính Domain, nó bị đổi thành đúng tên miền của web. Ứng dụng không đặt được cookie cho cả zyhost.app, nên web của người khác cũng không đọc hay ghi đè được cookie của bạn.

Các thuộc tính khác như HttpOnly, SameSite hay thời hạn được giữ nguyên.

Mục Giới hạn
Tốc độ request 50 request mỗi giây cho mỗi web, cho phép vượt tạm tới 200 request. Vượt nữa sẽ nhận mã 429
Kích thước request Tối đa 100 MB, ví dụ khi tải file lên
Thời gian phản hồi Ứng dụng cần trả lời trong 100 giây
WebSocket Dùng được bình thường

Cloudflare chỉ lưu cache khi ứng dụng gửi header Cache-Control cho phép, ví dụ Cache-Control: public, max-age=3600 cho ảnh hay file CSS. Không có header này thì mọi request đều đi thẳng vào ứng dụng. Nhờ vậy trang có nội dung riêng cho từng người dùng không bao giờ bị lộ qua cache.

Nếu ứng dụng có đường dẫn /.well-known/security.txt, Zyhost dùng nội dung của bạn. Nếu không có, đường dẫn này chuyển về file liên hệ bảo mật của Zyhost.