Динамически прокси стороннего контента на https

Я использую java и apache, и на своей защищенной странице я размещаю незащищенный сторонний контент, и когда я делюсь своей страницей на Facebook, на вкладке facebooks не отображается небезопасный контент. Я наткнулся на статью, которая описывает это поведение, и я ищу, чтобы исправить проблему. https://www.tabsite.com/blog/chrome-and-other-browsers-not-showing-insecure-content/

Поскольку мои контент-провайдеры не предоставляют защищенный контент, я подумал о том, чтобы использовать apache для передачи моего защищенного URL-адреса стороннему незащищенному URL-адресу.

Как бы я сделал мой прокси динамическим, чтобы мне не приходилось постоянно изменять свой образ сервера? Сначала я хотел добавить сторонний URL к моему домену.

https://images.example.com?url=http://content-provider.com/image/1234.jpg

и разобрать его с переписать Apache или что-то, однако я не уверен, что это подходящее решение. Я ищу некоторые мысли и предложения.

Как мне использовать mod_rewrite, чтобы переписать URL в параметр запроса?

Я пытался что-то писать следующий код безуспешно

https://images.example.com?url=http://content-provider.com/image/1234.jpg

RewriteCond %{QUERY_STRING} ^url=(.*)$ [NC]
RewriteRule (.*)$ %1 [NC,L,R=301]

Я надеялся на http://content-provider.com/image/1234.jpg

1 ответ

Решение

Сделать это совершенно общим способом было бы сложно. В вашем примере вы можете изменить флаг "R=301" на "P" (для прокси-сервера), и он должен работать (используйте rewritelog для отладки, если нет).

В противном случае вам нужно "каким-то образом" сопоставить URI запроса с внутренним сервером, возможно, здесь может помочь перезаписанная карта, но это будет зависеть от того, насколько много вы знаете о реальном расположении лежащих в основе прокси-файлов.

Одним из возможных (но очень простых) решений является разделение серверов и назначение им букв.

ProxyPass / a / http://content-provider-a.example.com/
ProxyPass / b / http://content-provider-b.example.com/...

И затем общие пути URI / a / path / to / file / on / provider-a / и т. Д. Но опять же, вы должны знать все местоположения заранее.

Если вы объясните немного больше, то может появиться больше предложений.

Дополнение информации после обсуждения. Во-первых, здесь есть некоторая полезная информация о mod_rewrite: перенаправление, изменение URL-адресов или перенаправление HTTP на HTTPS в Apache - все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить

Вы также должны потратить время на изучение PCRE.

Используя следующее в качестве нашей базовой конфигурации, вот несколько объяснений:

Переписать карту myquery "fastdbd: ВЫБЕРИТЕ externalURL ИЗ ФОТОГРАФИИ ГДЕ id =% s"
RewriteRule ^ / images /(.*) $ {myquery: $ 1} [P, L]

$ 1 является обратной ссылкой на строку, найденную в RewriteRule,. * Внутри скобок. % S - это аргумент, передаваемый в RewriteMap, который в этом случае аналогичен $1.

Примечание осторожности. Mod_rewrite не для слабонервных. Это очень сложно, и вы должны потратить некоторое время на работу над этим.

Другие вопросы по тегам