530 文字
3 分
【Astro】HTTPS での開発

Astro の開発サーバーで HTTPS を利用する#

Astro の設定ファイル(基本)#

Astro の公式ドキュメント「設定方法」: https://docs.astro.build/ja/reference/configuration-reference/ も参照。

プロジェクトのルートディレクトリに astro.config.mjs を配置する。ファイルの書き方は、

import { defineConfig } from 'astro/config'

export default defineConfig({
    // 設定項目をここに追加します
})

のようにする。

HTTPS サーバーのための準備#

まず、openssl コマンドで

  • 秘密鍵ファイル(key.pem

  • 証明書ファイル(cert.pem

の2つを作成します。

ターミナルで、

openssl req -newkey rsa:4096 -new -nodes -x509 -days 365 -keyout key.pem -out cert.pem

を実行して、各ファイルを生成します。この例では、証明書の有効期限は発行から 365 日間です。

(注意)Astro プロジェクトを Git のリモートリポジトリで管理している場合#

GitHub 等でプロジェクトを管理している場合、プロジェクトの .gitignorekey.pemcert.pem を追加して、これらのファイルがリモートで共有されるのを防止するのをおすすめします。

key.pem
cert.pem

必要な設定項目#

Astro は Vite を利用しているため、astro.config.mjs に Vite の設定を含めることができます。

以下の設定を追加することで、 Astro の開発サーバーで HTTPS を使うことができます。

import fs from 'node:fs'

...

{
    vite: {
        https: {
            key: fs.readFileSync('key.pem'),
            cert: fs.readFileSync('cert.pem')
        }
    }
}

Vite の公式ドキュメント「サーバーオプション」: https://ja.vitejs.dev/config/server-options.html も参照。

astro dev で開発サーバーを立ち上げた後、https://localhost:4321/ にアクセスして確認してください。

(おまけ)外部に IP アドレスを公開する#

以下の設定を追加することで、 Astro の開発サーバーに外部からアクセスできます。

{
    server: { host: true }
}

(おまけ)カスタムの HTTP ヘッダーを設定する#

以下のような設定を追加することで、 Astro の開発サーバーにカスタムの HTTP ヘッダーを設定できます。

{
    server: {
        header: {
            "Access-Control-Allow-Origin": "*",
            // "Cross-Origin-Opener-Policy": "same-origin",
            // "Cross-Origin-Embedder-Policy": "require-corp"
        }
    }
}

Astro の設定ファイル(最終)#

最終的な astro.config.mjs は以下のようになります:

import fs from 'node:fs'
import { defineConfig } from 'astro/config'

export default defineConfig({
    vite: {
        https: {
            key: fs.readFileSync('key.pem'),
            cert: fs.readFileSync('cert.pem')
        }
    },
    server: {
        host: true,
        header: {
            "Access-Control-Allow-Origin": "*",
            // "Cross-Origin-Opener-Policy": "same-origin",
            // "Cross-Origin-Embedder-Policy": "require-corp"
        }
    }
})

参考文献#

【Astro】HTTPS での開発
https://memos-and-essays.pages.dev/posts/astro-https/
作者
Hiiro Yasaka
公開日
2024-08-21
ライセンス
CC BY 4.0