Назад | Перейти на главную страницу

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

Как мне использовать 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

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

В противном случае у вас должен быть «какой-то способ» сопоставить 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.

Вот некоторые пояснения, которые используются в качестве базовой конфигурации:

RewriteMap myquery "fastdbd:SELECT externalURL FROM photo WHERE id = %s"
RewriteRule ^/images/(.*) ${myquery:$1} [P,L]

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

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