【Docker】DockerでHTTPS通信をする(localhostでやります)
はじめに
dockerのlocalhostでアプリケーションの実装をしていて、挙動が確認できたので本番稼働に移そうとサーバーにDockerコンテナを構築して、HTTPS稼働させようとしていると、上手いこといかないことがあったので、これが無いようにlocalhostでもHTTPS通信が出来るように行っていく。
基本的な設定方法はローカル環境でもサーバー側でも同じですので、サーバ側で行うときは適宜読み変えてください。
前提条件
・Dockerコンテナは作成済みでlocalhostやドメインでアクセスすることが確認できている
・SSL証明書(自作でも可)を準備できている
手順
・SSL証明を任意のディレクトリに配置
・default.confを編集
・docker-compose.ymlを編集
・編集を反映(docker-composeで再起動)
・https://localhostで接続確認
実装
まずdockerでコンテナが起動しているかの確認
docker ps
でコンテナ起動していて、接続できていることを確認する。
SSL証明書を配置する
今回はSSL証明書を設置するためのディレクトリ。sslというディレクトリをnginx配下に作成する。(以下参照)
├─docker
│ ├─db
│ │ ├─data
│ │ ├─my.cnf
│ │ └─sql
│ ├─nginx
│ │ └─ssl // ここに証明書を保存する
│ └─php
└─server
あとは、サーバー証明書をsslに移してくる。(以下参照)
├─nginx
│ │ default.conf
│ │
│ └─ssl
│ server.crt
│ server.key
次にdefalt.comfの記載を変更する。
server {
listen 80;
index index.php index.html;
root /var/www/;
<~省略~>
}
// https通信用の433のポートを記載
server {
listen 443 ssl;
index index.php index.html;
root /var/www/; //ここは適宜変えてください。
location / {
root /var/www/; //ここは適宜変えてください。
index index.html index.php;
try_files $uri $uri/ /index.php$query_string;
}
// 以下を追記
ssl_certificate /etc/nginx/ssl/server.crt; // SSL証明書
ssl_certificate_key /etc/nginx/ssl/server.key; // 秘密鍵
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
次にdocker-compose.ymlを編集する
version: "3"
services:
app:
<省略>
depends_on:
- db
nginx:
image: nginx
container_name: nginx
ports:
- 8080:80
- 443:443 // ここにHTTTSで通信するポートを開放しておく
volumes:
- ./server:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
// 以下を追記 /etc/nginx/ssl に docker/nginx/ssl をマウントさせる
- ./docker/nginx/ssl:/etc/nginx/ssl
depends_on:
- app
db:
<省略>
以上で設定は終わりです。
再起動
あとは、
docker-compose up -d
docker-compose restart
で、https://localhostにアクセスしてみてください。
もしできていなければ
docker-compose up --build
docker-compose up -d
でビルドし直してから起動してみても良いかもです。
以上です。
参考記事
この記事が気に入ったらサポートをしてみませんか?