Динамически прокси стороннего контента на 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 не для слабонервных. Это очень сложно, и вы должны потратить некоторое время на работу над этим.