Назад | Перейти на главную страницу

Пытается проксировать HTTPS, но получаю: получен неожиданный пакет TLS

На одном порту (5006) стоит HTTPS-сервер. Я хотел бы сделать его доступным на 35001 и обслуживать другие вещи на том же 35001 (добавив местоположения, например /app, /auth, /admin, и т.д.).

Сервер auth-server.org.local. Пытаемся просто добавить порт:

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

Вывод:

$ 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.

Почему 35001 не работает? Что мне не хватает? Я использовал это руководство: https://www.nginx.com/resources/admin-guide/nginx-https-upstreams/

Ваш виртуальный сервер является HTTP-сервером, поэтому он не работает с попытками подключения https.

Чтобы сделать это HTTPS, вам нужна эта конфигурация:

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;
    }
}

В качестве альтернативы вы можете настроить nginx stream прокси, который просто передает поток TCP в бэкэнд, так что nginx не выполняет завершение SSL:

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

Это должно быть за пределами http контекст.