0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel Sail環境 https化 手順まとめ

Posted at

はじめに

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 にアクセスして、
🔒 鍵マークが表示されれば成功です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?