Tôi biết Thay đổi: Cookie
Là không thích, vì nó tạo ra bộ nhớ đệm của mọi biến thể cookie mà người dùng có thể báo cáo. Mặt khác, không có nó, tôi đã phải sử dụng Kiểm soát bộ đệm: không có bộ đệm
để báo cho máy chủ bộ nhớ đệm NGINX của tôi bỏ qua hoàn toàn nội dung bộ nhớ đệm đó có thể có một người dùng đăng nhập (tình cờ là mọi trang trong trang web của tôi, vì có một hộp tài khoản ở đầu trang).
Tôi chỉ gửi cookie nếu người dùng đăng nhập, vì vậy hầu hết các lượt xem trang sẽ được hưởng lợi từ bộ nhớ đệm. Tôi muốn thu hẹp nó để chỉ có hai biến thể: một phiên bản được lưu trong bộ nhớ cache dành cho những người dùng có "phương sai" mà họ có không cookie và phiên bản không được lưu trong bộ nhớ cache dành cho những người có cookie (ví dụ: người dùng đã đăng nhập và có cookie xác thực).
Nếu tôi thêm "Vary: Cookie" vào chương trình Perl của mình, có cách nào để tôi nói với NGINX rằng trong trường hợp này, nó chỉ nên chú ý đến việc liệu một sessionId
cookie tồn tại hay không? Một cái gì đó dọc theo dòng -- để tạo một tiêu đề giả -- Thay đổi: Cookie('sessionId')
? Nếu có một cách để triển khai điều này trong tiêu đề được tạo bởi tập lệnh mà NGINX sau đó sẽ tôn trọng, tôi nghĩ rằng tôi thích cách đó hơn là đưa nó vào cấu hình NGINX, nhưng bất kỳ giải pháp nào cũng sẽ được đánh giá cao.
Tôi không hoàn toàn chắc chắn về cách kiểm tra xem liệu tôi có khiến NGINX phát điên với bộ nhớ đệm hay không, nhưng tôi tự hỏi liệu điều gì đó dọc theo những dòng này có thể hoạt động hay không: đối với người xem chưa đăng nhập, tập lệnh sẽ gửi Thay đổi: Cookie
, nhưng đối với người xem Là đã đăng nhập, nó sẽ gửi cả tiêu đề đó và Kiểm soát bộ đệm: không có bộ đệm
. NGINX có hiểu điều này là yêu cầu nó lưu vào bộ đệm phản hồi đầu tiên chứ không phải biến thể không? Hay tôi sẽ làm hỏng thứ gì đó theo cách mà tôi không nắm bắt được?
Cập nhật: Đây là mẫu của một trong các khối máy chủ của tôi:
người phục vụ {
server_name myservername.tld
nghe 80;
địa điểm / {
proxy_cache $PROXY_CACHE;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
hết thời gian chờ lỗi proxy_cache_use_stale http_429 http_500 http_502 http_503 http_504;
bật proxy_cache_background_update;
bật proxy_cache_revalidate;
proxy_cache_min_uses 1;
bật proxy_cache_lock;
proxy_pass $scheme://$APACHE_PROXY_REQ_IP:$APACHE_PROXY_REQ_PORT;
}
}