Динамически прокси стороннего контента на 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
задан 7 September 2016 в 22:54
1 ответ

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

2
ответ дан 3 December 2019 в 20:35

Теги

Похожие вопросы