RailsのPumaを使って、開発環境でHTTPSを有効にしたい場合に、正しく設定しないと問題が発生することがあります。本記事では、HTTPS設定における問題の解決方法を詳細に解説します。
問題の原因
config/puma.rb
に下記のように設定した場合、サーバーが正しく動作しません:
port ENV.fetch("PORT", 3000)
ssl_bind "0.0.0.0", "3000", {
key: ENV.fetch("SSL_KEY_PATH"),
cert: ENV.fetch("SSL_CERT_PATH")
}
問題のポイント
-
port
とssl_bind
で同じポートを使用していることが原因となり、サーバーがエラーを起こす。 -
port
は普通のHTTP接続用、ssl_bind
はHTTPS接続用ですが、同じポートは一時に1つのプロセスでしか使用できません。
解決方法
1. 開発環境でHTTPSを有効にする設定
開発環境でしか使用しない場合、ssl_bind
のみを設定します。
ssl_bind "0.0.0.0", "3000", {
key: ENV.fetch("SSL_KEY_PATH"),
cert: ENV.fetch("SSL_CERT_PATH")
}
これにより、HTTPS接続のみを認めるようになります。
サーバー起動の確認
設定を変更した後、サーバーが正常にHTTPSを使用できるかを確認します。
-
Railsサーバーを起動:
rails s
-
ブラウザでアクセス確認:
https://localhost:3000
これで正常にHTTPSでアクセスできるはずです。