Для разработки собственного обратного прокси-сервера (написанного на C ++) я хочу сделать перевод URI в реальном времени в HTML-контент. Например, если я хочу получить доступ к ресурсам на http://myserver/
с помощью http://my-reverse-proxy/myserver
, все абсолютные и топовые ссылки вроде http://myserver/somecontent1.ext
или же /somecontent2.ext
должны быть изменены.
HTML-тег
<img src="/sample.png">
поэтому будет переведен на
<img src="/myserver/sample.png">
С моей точки зрения есть подходы:
1) Использование регулярных выражений и замена строк, чтобы найти все связанные теги HTML и их пути с помощью групп захвата и выполнить некоторую замену строк.
2) Разобрать весь HTML-контент, выполнить некоторые преобразования в дереве разбора и распечатать результат обратно в действительный HTML-ресурс.
И вот в чем суть этого вопроса: есть ли у вас опыт, какое решение может быть более быстрым и, возможно, даже более разумным? Вы знаете рамки, которые я мог бы использовать, чтобы не изобретать велосипед? Поскольку этот процесс следует использовать позже для ресурсов CSS и XML, он не должен быть зависимым от HTML решением.
Заранее спасибо!
Прокси-серверы обычно работают, будучи серверы. Они обрабатывают все HTTP-запросы, изменяют запрошенные URL-адреса, а затем передают измененный запрос на сервер на другой стороне.
Вы должны придерживаться этой парадигмы. Это гораздо проще и эффективнее, чем копаться в самих файлах. Все, что делается в режиме реального времени, может быть выполнено в точке запроса.
Также, вероятно, следует спросить: почему обычай обратный прокси? Такие вещи уже существуют.
Других решений пока нет …