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