Tentando fazer proxy HTTPS, mas recebendo: Um pacote TLS inesperado foi recebido

3

Existe um servidor HTTPS em uma porta (5006). Eu gostaria de disponibilizá-lo no 35001 e servir outras coisas no mesmo 35001 também (adicionando locais como /app , /auth , /admin , etc.).

O servidor é auth-server.org.local . Tentando apenas adicionar uma porta:

server {
    listen 35001;
    location / {
        proxy_pass       https://auth-server.org.local:5006;
    }
}

Saída:

$ curl -k -X GET https://auth-server.org.local:5006
<h1>My auth server</h1>

$ curl -k -X GET https://auth-server.org.local:35001
curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received.

Por que o 35001 não funciona? o que estou perdendo? Eu usei este guia: link

    
por Velkan 11.07.2017 / 12:10

1 resposta

4

Seu servidor virtual é um servidor HTTP, portanto, não funciona com tentativas de conexão https.

Para torná-lo HTTPS, você precisa ter essa configuração:

server {
    listen 35001 ssl;
    server_name example.com;

    ssl_certificate /path/to/ssl/certificate;
    ssl_certificate_key /path/to/ssl/certificate;

    location / {
        proxy_pass https://auth-server.local:5006;
    }
}

Como alternativa, você pode configurar um proxy nginx stream , que simplesmente transmite o fluxo TCP para backend, para que o nginx não execute a terminação SSL:

stream {
    server {
        listen 35001;
        proxy_pass auth-server.local:5006;
    }
}

Isso tem que estar fora do contexto http .

    
por 11.07.2017 / 18:39

Tags