Nginx で WWW を使用して HTTP を HTTPS にリダイレクトする

Nginx で WWW を使用して HTTP を HTTPS にリダイレクトする

私はletsencrypt sslを使用しています。domain.comのサイトにアクセスすると、リダイレクトされます。https://ドメイン.comでも私はしたいhttps://www.domain.com

www でサイトにアクセスするために、DNS パネルで domain.com のエイリアスとして www を追加しました。しかし、二重のリダイレクトが発生しています。

最初のリダイレクト: domain.com から https:// domain.com、2 番目のリダイレクト: https:// domain.com から https:// www.domain.com

これを単一の 301 リダイレクトで実現したいです。SF で提供されている複数のソリューションをすでに試しましたが、うまくいきませんでした。誰かアイデアはありますか?

答え1

nginx 構成にアクセスでき、letsencrypt 証明書に domain.com と www.domain.com の両方が含まれていると仮定すると、次のようなものが機能するはずです。

server {
  listen 80;
  server_name www.domain.com;
  return 301 https://www.domain.com$request_uri;
}

server {
  listen 80;
  listen 443 ssl;
  server_name domain.com;
  ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
  return 301 https://www.domain.com$request_uri;
}

server {
  listen 443 ssl;
  server_name www.domain.com;
  ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

  # the rest of your config
}

SSL証明書には両方のドメインが含まれている必要があると思います。https://ドメイン.com301 リダイレクトがトリガーされる前に、domain.com の SSL ハンドシェイクが行われます。

各ドメインごとに個別の証明書を用意し、それに応じて証明書パスを調整することもできると思います。

関連情報