Nginx - encaminhar pedido para URL absoluto

1

Eu estou procurando fazer proxy de blocos de OSM do mapquest para que eu possa atendê-los aos meus usuários via SSL. É assim que minha configuração do nginx se parece:

upstream maptile_server {
    server otile1.mqcdn.com;
    server otile2.mqcdn.com;
    server otile3.mqcdn.com;
    server otile4.mqcdn.com;
}

server {

    # ...

    server_name app.example.com;

    location /tiles {
            proxy_pass http://maptile_server;
    }
}

Portanto, se houver um bloco de mapa no link , Quero acessá-lo no link .

Atualmente estou recebendo um erro de "URL inválido".

EDITAR:

Eu também considerei fazer algo assim:

location ~ /maptiles/(?<subdomain>.+)/(?<z>.+)/(?<x>.+)/(?<y>.+) {
    return http://$subdomain.mqcdn.com/tiles/1.0.0/osm/$z/$x/$y;
}

Mas isso me redireciona para a URL final, em vez de fazer proxy da solicitação. Existe alguma maneira de esconder o URL final do cliente?

    
por kbanman 07.03.2013 / 04:41

1 resposta

2

Talvez você esteja esquecendo proxy_set_header Host "otile1.mqcdn.com"; ?

Observe que todos os seus servidores upstream terão que aceitar o cabeçalho Host como válido e apropriado.

Se você não definir manualmente um cabeçalho Host , talvez nenhum cabeçalho de host seja fornecido para o desenvolvedor.

link
link
link

A documentação não é exatamente clara de qual Host é definida por padrão se o módulo upstream for usado; mas sua situação pode parecer que alguma funcionalidade está faltando no momento!

    
por 07.03.2013 / 04:59