riina-k.net

音楽・小説・プログラミングを手がけるリイナの拠点。

Docker Compose と nginx でリバースプロキシを作ろうとしたお話(SSL編)

Docker Compose と nginx でリバースプロキシを作ろうとしたお話(解答編) のさらに続き。
リバースプロキシで SSL 対応できました!!

いままではリバースプロキシとなる nginx の設定を自前で書いていましたが、いい感じのイメージがあることが分かりました。
jwilder/nginx-proxy : nginx リバースプロキシ
docker-letsencrypt-nginx-proxy-companion : 証明書を自動更新してくれるすごいやつ

この2つを使って、riina-k.metest.riina-k.me を SSL 化していきます。

/var/docker/proxy/docker-compose.yml

version: '3'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy <- 独自 Docker ファイルをやめる
    restart: on-failure
    labels:
      - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=jwilder/nginx-proxy
    container_name: nginx-proxy
    privileged: true
    ports:
      - "80:80"
      - "443:443" <- ポート追加
    volumes:
      - proxy:/etc/nginx/vhost.d
      - proxy:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs:ro
    networks:
      - app-net

  letsencrypt: <- 盛大に追加
    image: jrcs/letsencrypt-nginx-proxy-companion
    restart: on-failure
    container_name: letsencrypt-nginx
    depends_on:
      - nginx-proxy
    volumes:
      - proxy:/etc/nginx/vhost.d
      - proxy:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs:rw
    networks:
      - app-net

  apache.riina-k.me:
    build: ./vhosts/riina-k.me
    restart: on-failure
    container_name: apache.riina-k.me
    environment:
      VIRTUAL_HOST: riina-k.me
      LETSENCRYPT_HOST: riina-k.me <- Let's Enctypt に見つけてもらう設定
      LETSENCRYPT_EMAIL: riinak.tv@gmail.com
    volumes:
      - ./vhosts/riina-k.me/var/www/html:/var/www/html
    networks:
      - app-net

  apache.test.riina-k.me:
    build: ./vhosts/test.riina-k.me
    restart: on-failure
    container_name: apache.test.riina-k.me
    environment:
      VIRTUAL_HOST: test.riina-k.me
      LETSENCRYPT_HOST: test.riina-k.me <- Let's Enctypt に見つけてもらう設定
      LETSENCRYPT_EMAIL: riinak.tv@gmail.com
    volumes:
      - ./vhosts/test.riina-k.me/var/www/html:/var/www/html
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

volumes:
  proxy:

これで docker-compose up して https://riina-k.me にアクセスしたら、最初はエラーページが出ますが、ものの5分で SSL 証明書の発行されたページが開きました。

https://riina-k.me の証明書

http でアクセスしたら、ちゃんと https にリダイレクトもしてくれる。
/var/docker/proxy/certs 配下に各種証明書ファイルが生まれてます。

えっ、これで終わり?

終わりです。

なんか呆気なさすぎて作業した気にならない……
本当に SSL の更新も自動化されるのかなー、期限が待ち遠しいなー。

ネットワーク編へ続く

  1. コメント 0

  1. トラックバック 0

return top