Vì vậy, bạn muốn nginx
ủy quyền một yêu cầu từ máy khách đến máy chủ phụ trợ, và sau đó, trước khi trả lại câu trả lời của phụ trợ cho máy khách, hãy trả lời như vậy thông qua bộ xử lý bên ngoài khác?
Tôi không nghĩ rằng bạn có thể làm như trên với bất kỳ nginx
mô-đun chính thức nào được cung cấp bởi Igor Sysoev và Nginx, Inc. Điều gần gũi nhất đó là có sẵn để thay đổi cơ thể của phản ứng là một vài mô-đun bộ lọc mà đến với nhau với nginx, nhưng tắt theo mặc định, bao gồm cả add_before_body
, add_after_body
và sub_filter
chỉ thị:
http://nginx.org/en/docs/http/ngx_http_addition_module.html
http://nginx.org/en/docs/http/ngx_http_sub_module.html
Ngoài ra, có lẽ gzip on;
là những gì bạn thực sự muốn thay thế?
http://nginx.org/en/docs/http/ngx_http_gzip_module.html
Hoặc, có khả năng, nếu bạn biết perl
và sẵn sàng chạy một mô-đun thử nghiệm hoàn toàn, hãy xem việc nhúng perl
vào nginx
, với một mô-đun nginx chính thức được tắt theo mặc định và (hoàn toàn rõ ràng) hoàn toàn thử nghiệm:
http://nginx.org/en/docs/http/ngx_http_perl_module.html
Một tùy chọn khác là sử dụng một số loại thiết lập Fast-CGI mà bạn sẽ chuyển hướng các yêu cầu, trong đó, lần lượt, tập lệnh Fast-CGI của bạn sẽ thực hiện các yêu cầu đến phần phụ trợ, rồi xử lý cuối cùng, trước khi quay lại các phản hồi trở lại nginx để lưu trữ và trả lại cho người dùng.
Ngoài ra còn có proxy_set_body
(nhưng chưa có fastcgi_set_body
), để thay đổi nội dung của yêu cầu (ví dụ: từ những gì khách hàng đã cung cấp), nhưng dường như không có bất kỳ chỉ thị hoặc biến tương đương nào để có được phần thân của phản hồi, để vượt qua đến một yêu cầu nào đó tiếp theo cho một bộ xử lý sau. Trong mọi trường hợp, một mô-đun bộ lọc có thể là những gì bạn muốn cho một bộ xử lý hậu.
(Ngoài ra, bạn có nhận ra rằng một cách tiếp cận ngây thơ của các fork
câu trả lời ing và đường ống thông qua một giám đốc điều hành thông thường sẽ cực kỳ chậm, phải không?)
Tóm lại , tôi nghĩ gzip on;
chính xác là những gì bạn đang tìm kiếm; mặt khác, miễn là bạn có thể sửa đổi ứng dụng web gốc, tôi nghĩ rằng cách tốt nhất của bạn có thể là cài đặt một số loại bộ xử lý hậu kỳ trong chính ứng dụng web, có vẻ như là giải pháp đơn giản nhất tiếp theo. Về tiềm năng, bạn có thể xem xét cách các mô-đun bộ lọc được triển khai, ví dụ ngx_http_addition_filter_module.c đã nói ở trên, cộng với một số bộ lọc có liên quan rõ ràng hơn như ngx_http_gzip_filter_module.c và triển khai mô đun bộ lọc nhúng của riêng bạn. Hoặc thuê Nginx, Inc. để viết bài này cho bạn! Nhưng, nghiêm túc, gzip on;
chỉ hoạt động và có khả năng mang lại cho bạn kết quả tốt hơn nhiều mà không gặp rắc rối, hiệu suất hoặc vấn đề ổn định và nó đã được biên dịch theo mặc định, bạn chỉ cần kích hoạt nó trongnginx.conf
.