xPomaHx
@xPomaHx
1vs9

Почему на некоторых сайтах proxy pass на https не срабатывает handshake?

запускаю так сервер так
spoiler
version: '3'
services:
  webserver:
    image: nginx:alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./logs.log:/var/log/nginx.log
    command: [nginx-debug, '-g', 'daemon off;']

конфиг нджинкса
spoiler
events {}

error_log /var/log/nginx.log debug;

http {
    server {
        listen 80;
        location = /api/v1 {
            proxy_pass https://m.habr.com/kek/v2/articles/?sort=rating&fl=ru&hl=ru&page=2;
        }
        location = /api/v2 {
            proxy_pass https://dog.ceo/api/breeds/image/random;
        }
    }
}


потом курлом проверяем

spoiler
curl -v http://192.168.1.64/api/v1
curl -v http://192.168.1.64/api/v2


в итоге в первом случае всё норм, а во втором 502 и в расширенных логах пишет

spoiler
2020/11/27 03:46:28 [error] 30#30: *3 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: 192.168.1.44, server: , request: "GET /api/v2 HTTP/1.1", upstream: "https://104.26.4.148:443/api/breeds/image/random", host: "192.168.1.64"


С чем такое может быть связано?
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Попробуйте заголовок Host правильный подложить. Ну и вообще - там, куда вы стучитесь, всё нормально с SSL?
Ответ написан
@dodo512
Разрешить передачу имени через SNI.
nginx.org/ru/docs/http/ngx_http_proxy_module.html#...
location = /api/v2 {
    proxy_ssl_server_name on;
    proxy_pass https://dog.ceo/api/breeds/image/random;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы