Nginx proxy_pass para IP, mas use HTTPS

2

Eu tenho um servidor legado que é protegido por meio do certificado SSL para example.com . Eu quero colocar outro servidor na frente deste para proxy_pass certos (legado) tráfego. O novo servidor deve ser exposto no example.com também.

Se eles estivessem em domínios separados ( legacy.example.com e example.com ), eu simplesmente seria capaz de proxy_pass https://legacy.example.com . No entanto, o aplicativo herdado está repleto de example.com URLs codificados (e possui apenas um certificado SSL para example.com ). Qualquer outro URL (o IP, por exemplo) redirecionará para example.com .

O que eu quero fazer é proxy_pass <legacy IP> , definir o cabeçalho do host com proxy_set_header Host example.com . Mas o problema é que isso não usa HTTPS.

Eu fiz algo há algum tempo com o curl, consegui me conectar a um servidor pelo IP, mas especificar o domínio a ser usado para o certificado. Mesmo que não houvesse nenhum registro de A para example.com de mapeamento para esse IP, eu consegui fazer com que ele achasse que estava sendo conectado por esse domínio.

curl https://example.com/path --resolve example.com:<IP>

Existe algo assim no Nginx?

    
por Chris Smith 31.08.2017 / 20:08

1 resposta

3

Eu não usei isso sozinho, mas parece que proxy_ssl_name pode ser o que você está procurando:

Por exemplo:

proxy_set_header Host example.com;
proxy_ssl_name        example.com;
proxy_pass            https://1.2.3.4;

Veja este documento para detalhes.

    
por 31.08.2017 / 21:30