Dinamicamente Proxy conteúdo de terceiros para https

1

Estou usando o java e o apache e estou hospedando conteúdo de terceiros não seguro na minha página segura e quando compartilho minha página no facebook, a guia do Facebook não exibe o conteúdo inseguro. Eu encontrei um artigo que descreve esse comportamento e estou tentando corrigir o problema. link

Como meus provedores de conteúdo não fornecem conteúdo seguro, pensei em usar o apache para fazer proxy em meu URL seguro para URLs não seguros de terceiros.

Como eu poderia fazer meu proxy dinâmico para que eu não tivesse que modificar consistentemente minha imagem de servidor? Meu pensamento inicial foi preceder o URL de terceiros com meu domínio

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

e analisá-lo com o reescrito do apache ou algo assim, no entanto, não tenho certeza se essa é uma solução apropriada. Estou à procura de alguns pensamentos e sugestões.

Como eu uso o mod_rewrite para reescrever o URL no parâmetro de consulta?

Eu tentei escrever o seguinte código sem sucesso

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

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

Eu estava esperando por http://content-provider.com/image/1234.jpg

    
por George 07.09.2016 / 19:53

1 resposta

2

Fazer isso de uma maneira completamente genérica seria difícil. No seu exemplo, você pode alterar o sinalizador "R = 301" para "P" (para proxy) e ele deve funcionar (use o rewritelog para depurar, caso contrário).

Caso contrário, você precisa ter 'alguma maneira' de mapear o URI de solicitação para um servidor de backend, possivelmente um reescrita poderia ajudar aqui, mas dependeria de quanto você sabe sobre a localização real dos arquivos proxy subjacentes. / p>

Uma solução possível (mas muito simples), você poderia dividir os servidores e atribuir-lhes uma carta.

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

E, em seguida, os caminhos URI gerais / a / caminho / para / arquivo / on / provider-a / etc. Mas, novamente, você precisa conhecer todos os locais com antecedência.

Se você explicar um pouco mais, mais sugestões poderão ser feitas.

Informações adicionais após discussão. Primeiro, há algumas boas informações sobre mod_rewrite aqui: Redirecionar, Alterar URLs ou Redirecionar HTTP para HTTPS no Apache - Tudo o que você sempre quis saber sobre as regras do Mod_Rewrite, mas teve medo de perguntar

Você também deve gastar tempo aprendendo sobre PCRE.

Usando o seguinte como nossa configuração básica, veja algumas explicações:

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

$ 1 é uma referência anterior à string correspondida no RewriteRule, o. * dentro dos colchetes. O% s é o argumento passado para o RewriteMap, que neste caso é o mesmo que $ 1.

Uma nota de cautela. Mod_rewrite não é para os que gostam de emoções strongs. É muito complexo e você deve esperar passar algum tempo trabalhando nisso.

    
por 07.09.2016 / 21:56