Sửa đổi các trang HTML được trả lại bởi nginx proxy ngược


16

Tôi có một thiết lập proxy ngược để truy cập vào ứng dụng của bên thứ ba nằm trong mạng nội bộ từ internet. Giả sử ứng dụng này có trên URL:

https://internalserver:8080/ (chỉ có thể truy cập từ mạng nội bộ)

và proxy là trên:

https://proxyserver/ (có thể truy cập từ bất kỳ nơi nào trên thế giới)

Proxy được quản lý bởi nginx và đang hoạt động tốt. Khi người dùng truy cập, https://proxyserver/ họ nhận được nội dung của ứng dụng tại https://internalserver:8080/.

Vấn đề là ứng dụng đang viết URL tuyệt đối trong phản hồi HTML, vì vậy, khi người dùng nhấp vào liên kết đến một trang mới, trình duyệt đang cố định vị trang có tên nội bộ, ví dụ https://internalserver:8080/somepage thay vì https://proxyserver/somepage.

Tôi biết đây là một lỗi chương trình, nhưng tôi không thể sửa đổi chương trình.

Tôi có thể chặn phản hồi, sửa đổi URL và gửi (sửa đổi) cho khách hàng cuối cùng bằng nginx không? Hoặc có thể với một công cụ khác?

EDIT: Tôi đã thấy câu hỏi này trước đây, nhưng trường hợp của tôi cụ thể hơn, câu hỏi được trích dẫn yêu cầu sửa đổi chung. Trong trường hợp đó, chương trình ad hoc nhanh-cgi là giải pháp tốt nhất, điều tôi muốn là một giải pháp cụ thể hơn cho (tôi nghĩ) một kịch bản phổ biến hơn. trong khi một chương trình cgi nhanh có thể hoạt động, tôi tìm kiếm một cách dễ nhất và có thể mạnh hơn và được chứng minh trong thế giới thực, giải pháp cho kịch bản này.


Câu trả lời:



3

http://nginx.org/en/docs/http/ngx_http_sub_module.html

Mô đun ngx_http_sub_module là một bộ lọc sửa đổi một phản hồi bằng cách thay thế một chuỗi được chỉ định bằng một chuỗi khác.

Mô-đun này không được xây dựng theo mặc định, nó phải được kích hoạt với tham số cấu hình --with-http_sub_module.

Cấu hình ví dụ

sub_filter      </head>
    '</head><script language="javascript" src="$script"></script>';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.