HTTPS-прокси с Caddy

Я работаю с приложением Golang и Caddy в качестве HTTP-сервера. Приложение golang отклоняет каждое http-соединение, его можно использовать только через HTTPS. Это приложение представляет собой своего рода API/сервис, который используется другими приложениями. Поскольку для этого требуется HTTPS, я установил Caddy, поэтому я могу воспользоваться автоматическим сертификатом SSL и использовать прокси для переключения между портами.

Приложение работает на порту 9000, поэтому потребители будут писать только mysite.com, а caddy должен отвечать за перенаправление петиций на порт 9000, но поддерживать HTTPS. Конфигурация в caddy для сайта:

mysite.com {
    proxy / :9000 {
        max_fails 1
    }
    log logfile
}

Тем не менее, похоже, что при создании прокси HTTPS теряется. Я проверил журналы приложения (нет журналов Caddy), и я получаю это:

http: TLS handshake error from xxx.xxx.xxx.xxx:xxxx: tls: oversized record received with length 21536

Итак, исходя из этой ошибки, мне кажется, что прокси-сервер HTTP, созданный caddy, теряет HTTPS. Что я могу сделать?


person Sredny M Casanova    schedule 25.07.2017    source источник
comment
Чтобы было ясно, порт 9000 прослушивает http или https?   -  person captncraig    schedule 25.07.2017
comment
Если он прослушивает https, попробуйте proxy / https://localhost:9000   -  person Ekin Koc    schedule 25.07.2017
comment
@captncraig HTTPS. Благодарю вас!   -  person Sredny M Casanova    schedule 25.07.2017


Ответы (1)


Из документов caddy

to — конечная точка назначения для прокси. Требуется хотя бы один, но можно указать несколько. Если схема (http/https) не указана, используется http. Сокеты Unix также могут использоваться с префиксом «unix:».

Так что, возможно, он отправляет запросы http на прокси-конечную точку https.

Делает

mysite.com {
    proxy / https://localhost:9000 {
        max_fails 1
    }
    log logfile
}

почини это?

Если это так, вам может не понадобиться ваше приложение на: 9000 для прослушивания https. Это может упростить ваше развертывание или управление сертификатами, если он просто прослушивает http, а caddy управляет всеми сертификатами.

person captncraig    schedule 25.07.2017
comment
Или избавьтесь от caddy, поскольку вы просто используете http-сервер Go для прокси-сервера Go http, что не приносит вам никакой пользы. - person Adrian; 25.07.2017
comment
@Adrian, предположительно, ему нравится интеграция Let's Encrypt от caddy. Который можно было бы получить другими способами в его собственном коде, но кэдди довольно легко добавить. - person captncraig; 25.07.2017
comment
Так же как и autocert, кроме того, OP уже выставляет HTTPS из своего собственного приложения, что является заявленной проблемой (Caddy отправляет HTTP-трафик, когда приложение ожидает HTTPS), а это означает, что они уже должны иметь дело с сертификатами. В приведенном сценарии Caddy добавляет нулевую ценность. - person Adrian; 25.07.2017
comment
Или OP может встроить Caddy - person ; 25.07.2017