Làm cách nào để tạo lại HAProxy thành một back-end khác khi cái đầu tiên bị thiếu tập tin? Những gì tôi cần là errorloc
nhưng thực hiện viết lại thay vì chuyển hướng, vì vậy khách hàng không nhận thức được chuyển hướng.
Chúng tôi đã phát triển một ứng dụng với NginX, cả hai đều cân bằng tải ngược proxy và máy chủ web cho các tệp tĩnh. Ứng dụng dựa trên khung Opa yêu cầu các phiên dính dựa trên cookie - được hỗ trợ bởi cả NginX và HAproxy. Tính năng ứng dụng chúng tôi gặp vấn đề là tạo nội dung động. Nó tạo ra hình ảnh theo yêu cầu, nhưng sau khi tạo nó được lưu trên đĩa và có thể được truy cập tĩnh với đường dẫn xác định.
Vấn đề đã được giải quyết dễ dàng với NginX - nó cố gắng đọc tệp cục bộ và chỉ sử dụng back-end cân bằng tải nếu tệp bị thiếu (chưa được tạo):
server {
server_name wkaliszu.pl;
location /thumb {
root /path_on_disk/to_cached_content;
expires 7d;
# try to access already generated content
try_files $uri @wkaliszu;
}
location / {
# reverse proxy to the application
[...]
}
location @wkaliszu {
# reverse proxy to the application
[...]
}
}
Máy chủ đã được di chuyển và hiện sử dụng HAPproxy để cân bằng tải, đây không phải là máy chủ web và không hỗ trợ tính năng này. Bây giờ việc tạo phần mềm động được thực hiện mỗi khi khách hàng cố gắng truy cập tài nguyên, việc này chậm hơn nhiều và lãng phí tài nguyên. Sẽ ổn nếu nó có thể sử dụng back-end tiếp theo nếu lần đầu tiên (máy chủ web bộ nhớ đệm đơn giản cho các tệp tĩnh) không thành công với lỗi 404, nhưng tôi không thể tìm ra cách thực hiện đơn giản. Chuyển hướng /thumb
đến NginX, cố gắng đọc tệp tĩnh và viết lại thành HAproxy với tiêu đề HTTP mới chỉ xuất hiện trong đầu tôi, nhưng tôi muốn tìm thứ gì đó tốt hơn.