Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Nginxでupstreamにhttpsなホストを設定する時の注意点

More than 5 years have passed since last update.

NginxのバックエンドにhttpsなURLを指定する時のお話。

proxy_pass を使う

こんな感じ?これは問題なく動作する。

server {

  ...

  location / {
    proxy_pass https://himitsu.no.site/;
  }

  ...
}


upstream を使う

しかし、深遠なる理由(別エントリにする予定)でupstream化したい。
その場合、このように書けば動きそうだが。。。

upstream backend {
    server himitsu.no.site;
}

server {

  ...

  location / {
    proxy_pass https://backend/;
  }

  ...
}

しかし、実際はこんなエラーでうまく動かない。

2014/10/07 09:30:58 [error] 10661#0: *1 SSL_do_handshake() failed (SSL: error:140770FC:SSL 
routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, client: 127.0.0.1, 
server: 0.0.0.0, request: "GET / HTTP/1.1", upstream: "https://xx.xx.xx.xx:80/", host: "localhost"

ログをよく見ると、80番ポートにアクセスしようとしているらしい。
upstreamのserverで、きちんとポートまで指定してあげると問題なく動いた。

upstream backend {
    server himitsu.no.site:443;
}

server {

  ...

  location / {
    proxy_pass https://backend/;
  }

  ...
}

※ちなみに、ログをよく見ずにだいぶハマってしまったのは内緒

tver-technologies
Innovate TVision, Designing Value / テレビ・動画配信の可能性を切り拓き、新しい価値をデザインしていきます。
https://www.tver-tech.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away