はじめに
Laravel Sail でローカル環境を構築したけれど、
「http://localhost」ではなく 「https://localhost」 でアクセスしたい!
そんなときに使える、シンプルかつ爆速なSSL対応方法を、
備忘録も兼ねてまとめました。
前提条件
Laravel Sail を使ったローカル開発環境が既に構築済み
環境
- Laravel 12.19.3
- PHP 8.4.10
- macOS(brew コマンドを使用)
1. SSL用の証明書を作成する(mkcert)
brew install mkcert
brew install nss # Firefox使う場合のみ
mkcert -install
これで以下のファイルが生成されます。
localhost.pem
localhost-key.pem
2. 生成したファイルを、docker/ssl/ ディレクトリに移動&リネームします。
生成したファイルを、docker/ssl/ ディレクトリに移動&リネームします。
mv localhost-key.pem docker/ssl/privkey.pem
mv localhost.pem docker/ssl/cert.pem
# ファイルの場所
docker/
└── ssl/
├── cert.pem ← mkcert で生成した証明書(公開鍵)
└── privkey.pem ← mkcert で生成した秘密鍵
3. default.conf
を作成
docker/nginx/default.conf に、以下のような内容で設定します:
server {
listen 443 ssl default_server;
server_name localhost;
ssl_certificate /etc/nginx/certs/server.pem;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://laravel.test;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
# ファイルの場所
docker/
├── ssl/
│ ├── localhost.pem
│ └── localhost-key.pem
└── nginx/
└── default.conf
4. docker-compose.yml
に nginx サービスを追加/修正
nginx サービスを以下のように定義します:
nginx:
image: 'nginx:latest'
ports:
- '${HTTP_PORT:-80}:80'
- '${SSL_PORT:-443}:443'
environment:
- SSL_PORT=${SSL_PORT:-443}
- APP_SERVICE=${APP_SERVICE:-laravel.test}
- SERVER_NAME=${SERVER_NAME:-localhost}
- SSL_DOMAIN=${SSL_DOMAIN:-localhost}
- SSL_ALT_NAME=${SSL_ALT_NAME:-DNS:localhost}
volumes:
- 'sail-nginx:/etc/nginx/certs'
- './docker/ssl/privkey.pem:/etc/nginx/certs/server.key:ro'
- './docker/ssl/cert.pem:/etc/nginx/certs/server.pem:ro'
- './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
depends_on:
- laravel.test
networks:
- sail
ボリューム定義も忘れずに追加:
volumes:
sail-nginx: # ← 追加
driver: local
sail-mysql:
driver: local
また、laravel.test サービス側でポート80を使用している場合は削除します:
laravel.test:
ports:
# - '${APP_PORT:-80}:80' ここを削除
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
5. .env
の APP_URL を修正
HTTPSでアクセスするために、.env の APP_URL を以下のように変更します:
.env
APP_URL=https://localhost
✅ 完了!
./vendor/bin/sail down
./vendor/bin/sail build --no-cache
./vendor/bin/sail up -d
お疲れ様でした!ブラウザで https://localhost にアクセスして、
🔒 鍵マークが表示されれば成功です!