này dường như là thể qua một số phương pháp khác nhau, nhưng đó không phải để nói như thế nào nên nó thực sự có thể.
Có vẻ như có khả năng có vấn đề (ví dụ: nếu bạn viết lại thứ gì đó không nên viết lại?) Và tài nguyên máy chuyên sâu (nhiều chu kỳ CPU để phân tích cú pháp và munge phản ứng liên tục).
Đây là những gì tôi thấy:
Nginx có http_sub_module xuất hiện để thực hiện điều này một cách khá đơn giản, giả sử những gì bạn muốn thay thế là đơn giản và bạn chỉ cần phù hợp với một mô hình trên mỗi trang, như thay thế <a href="http://example.com/...
với <a href="https://example.com/...
, một hoặc nhiều lần. Loại nội dung-mungery này có vẻ sơ sài nhưng tùy thuộc vào tình huống bạn đang ở (có thể là một trong những điều khiển giới hạn của ứng dụng) nó có thể đưa bạn đến đó.
Có vẻ như có một cái gì đó gọi là http_substitutions_filter, có thể không chính thức hoặc ít nhất không phải là một phần của phân phối Nginx lõi có thể viết lại dựa trên bộ lọc mạnh mẽ hơn.
Varnish seems to have khả năng tương tự (có thể là plugin) nhưng HAProxy doesn't, vì nó chỉ đề cập đến tiêu đề và để lại thân thể ngoại trừ khi thực hiện tải xuống gzip. Các phần mềm có khả năng đảo ngược proxy khác như Apache hoặc Squid cũng có thể cung cấp một cái gì đó hữu ích, mà bạn muốn đặt trước máy chủ ứng dụng của mình. Ấn tượng ban đầu của tôi, trong mọi trường hợp, là chuỗi thay thế đơn giản có thể không hoàn toàn giúp bạn ở đó, và thậm chí thay thế dựa trên regex cũng không thực sự đủ, mà không có sự tinh tế đáng kể trong regexes, bởi vì bạn luôn luôn có nguy cơ viết lại một cái gì đó mà bạn không nên.
Điều tôi đề nghị "thực sự cần phải xảy ra" để thực hiện mục đích này theo cách chính xác nhất, sẽ thực sự giải thích HTML được tạo bằng thư viện phân tích cú pháp DOM, duyệt cây và sửa đổi các yếu tố có liên quan - nơi, trước khi trao tài liệu sửa đổi cho người yêu cầu. Bằng cách này, tài liệu được sửa đổi dựa trên sự hiểu biết theo ngữ cảnh về nội dung của nó.
Nghe có vẻ phức tạp, theo ý kiến của tôi, vì nó là - vì vậy tôi sẽ đề nghị bạn xem xét lại cách tiếp cận đã lên kế hoạch của bạn trừ khi điều này nằm ngoài tầm kiểm soát của bạn.
Cuối cùng nghĩ: tò mò là tốt nhất của tôi, vì vậy tôi lấy câu hỏi này và trang bị thêm proxy ngược http tôi đã viết (cho một mục đích khác) để dựa trên kiểu nội dung, nó thực sự có thể phân tích cú pháp và đi bộ Cấu trúc HTML như một thực thể thích hợp, sửa đổi nó tại chỗ (như mô tả ở trên), trước khi trả về phần thân phản hồi cho người yêu cầu.
Điều này hóa ra, như tôi mong đợi, phải xử lý khá nhiều. Nội dung thử nghiệm của tôi là 29K HTML thực tế từ một trang web trực tiếp, có chứa 56 <a href ...>
và 6 <link rel ...>
yếu tố và thao tác ghi lại yêu cầu 128 mili giây trên Opteron 12 GHz và 43 MHz Xeon E5620 2,4 GHz. Những tiêu chuẩn này là đúng cho các hoạt động bổ sung - không bao gồm thời gian (số lượng nhỏ hơn) cần thiết cho chính chức năng "proxy" thực tế. Chi phí thời gian này không phải là không thể vượt qua, nhưng có thể thêm đến rất nhiều thời gian CPU. Điều này dài hơn nhiều so với viết lại nội dung dựa trên cụm từ thông thường, nhưng nó chính xác hơn nhiều và khó có thể phá vỡ các trang mà nó chạm vào.