nginx ssl proxy para vários servidores apache

1

Eu tenho vários servidores de aplicativos da web nodejs em HTTP e preciso certificar os pedidos enviados para esses servidores. Eu estava pensando em usar o nginx como um proxy para as solicitações, certificando apenas o servidor nginx com um certificado SSL para que os dados / imagens enviados de volta ao cliente sejam atendidos por HTTPS.

Esta é a estrutura em que pensei:

                                   +--- app1 ---> node.js on ip:10001
                                   |
client --> https --> nginx --> http --- app2 ---> node.js on ip:10002
                                   |
                                   +--- app3 ---> node.js on ip:10003

Minha preocupação é com o objeto de resposta da solicitação com proxy. Os navegadores baseados em Webkit e o Safari estão me avisando que meu aplicativo está em HTTPS, mas está exibindo conteúdo por meio de HTTP (aviso de conteúdo misto).

Ao certificar o servidor proxy, minha resposta ao cliente seria validada como HTTPS ou HTTP?

Meu proxy nginx teria um subdomínio certificado como proxy.domain.com , para que solicitações fossem feitas, por exemplo, como " link ". A solicitação é feita por HTTPS para o proxy, mas o conteúdo do servidor retornado é por HTTP. Como o proxy decretaria o conteúdo retornado?

Aplicaria a criptografia SSL, portanto, enviando de volta o recurso da seguinte forma: " link "

Obrigado antecipadamente a todos

    
por mnemosdev 20.11.2017 / 11:37

1 resposta

1

o que você está tentando é chamado de terminação SSL. É quando o proxy reverso manipula o SSL e encaminha o pedido para o servidor proxy com o protocolo HTTP. Portanto, o cliente terá uma conexão HTTPS, mas o proxy reverso (nginx) para o servidor proxy (apache) terá uma conexão HTTP. No nginx você faz o seguinte:

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.chained.crt;
    ssl_certificate_key www.example.com.key;

    location /{
        proxy_pass http://upstream_name:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Scheme $scheme;
    }
}

Se você quiser estudar mais, pode usar esta documentação oficial do Nginx link . Para conteúdo misto, acho que tenho o mesmo para @Bert. É talvez porque no HTML você ainda está servindo o protocolo http.

    
por 21.11.2017 / 14:00