目的
docker-composeで立てたnginxをhttps対応にしたい。
あくまでも開発環境用なのでオレオレ証明書です。
手順
自己署名証明書をサクッと作成する
❯ openssl req -x509 -nodes -new -keyout server.key -out server.crt -days 365
docker-composeの更新
443ポートを使用するように変更。
また、作成した証明書も読み込めるようにvolumes
も更新。
version: "3.5"
services:
web:
build: ./docker/nginx
restart: always
ports:
- 443:443 # 変更
depends_on:
- app
volumes:
- ./:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./docker/nginx/server.crt:/etc/nginx/server.crt # 追加
- ./docker/nginx/server.key:/etc/nginx/server.key # 追加
links:
- app
networks:
- default
default.confの更新
ポートを443に変更し、証明書の情報を追加します。
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/laravel/public;
location / {
try_files $uri $uri/ @laravel;
}
立ち上げ
❯ docker-compose down && docker-compose up -d
❯ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------
web_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp
オレオレ証明書なので接続時に警告が出ますが、ひとまずこれでhttpsでの接続が可能になりました。
【補足】laravel-admin対応
環境変数の更新
.env
のAPP_URL
を更新します。APP_URL=https://~~~
ちなみに実際の作業時、ここをちゃんとhttpsにはしてたんですが、お試しデプロイ時にlocalhostにしたままにしてしまって遷移先が全部つながらずフフ……となるなどしました。
設定ファイルの更新
larave-adminの遷移先URLもhttpsにするため、confit/admin.php
も修正。
'https' => env('ADMIN_HTTPS', TRUE),
参考にさせていただいたもの
オレだよオレオレ認証局で証明書つくる - Qiita
Nginx on DockerでHTTPS接続できるローカルサーバーを用意する - Tomcky’s blog