はじめに
Kongでhttp://localhost:8000
とかhttps://localhost:8000
とかの記述があって、httpとhttpsの違いはどこでやっているんだろうと調べた自分用メモ。docker-composeで調べたが、他の実装も同じ想定。
Kongのマニュアルをちゃんと読めば書いているかもしれない。
docker-compose.ymlの設定
githubからKongのインストール資材を入手
https://github.com/Kong/docker-kong
docker-compose.ymlでkong使っての通信はhttpのみ許可する設定。
kong:
image: "${KONG_DOCKER_TAG:-kong:latest}"
user: "${KONG_USER:-kong}"
environment:
<<: *kong-env
KONG_ADMIN_ACCESS_LOG: /dev/stdout
KONG_ADMIN_ERROR_LOG: /dev/stderr
#### これがProxyを介した通信の設定
KONG_PROXY_LISTEN: "${KONG_PROXY_LISTEN:-0.0.0.0:8000}"
KONG_ADMIN_LISTEN: "${KONG_ADMIN_LISTEN:-0.0.0.0:8001}"
〜以下省略〜
KONG_PROXY_LISTEN
の横に色々書かれているが、KONG_PROXY_LISTEN
が設定されていなければ0.0.0.0:8000
を使えということらしい。
変数の設定は
-
[IPアドレス]:[port]
ならhttp通信 -
[IPアドレス]:[port] ssl
ならhttps通信
とのこと。
httpsの通信設定
https通信の場合、単にsslをつけるだけでssl通信になる。
...
#### 8000番ポートがhttp通信の設定
#### KONG_PROXY_LISTEN: "${KONG_PROXY_LISTEN:-0.0.0.0:8000}"
↓以下に変更
#### これで8000番ポートをhttps通信の設定になる
KONG_PROXY_LISTEN: "${KONG_PROXY_LISTEN:-0.0.0.0:8000} ssl"
8000ポートはhttp通信みたいな記述がネットにあったが単に定義の仕方だけの話だった。
https://localhost:8000
と8000番ポートでもhttpsで使うよう設定すうることはできる。
http通信とhttps通信の両方をKongで受ける
httpとhttpsの両方を受け付ける場合は並べて記載する。
変数未定義時のデフォルト値の書き方だが、パラメータが複数ある場合の記述方法が分からなかったためベタ書き。
### httpを8000ポートで、httpsを8443で受ける場合
KONG_PROXY_LISTEN: "0.0.0.0:8000, 0.0.0.0:8443 ssl"
これでhttpの場合はhttp://localhost:8000
で、httpsの場合はhttps://localhost:8443
で通信できるようになる。