Nginx에서 WWW를 사용하여 HTTP를 HTTPS로 리디렉션

Nginx에서 WWW를 사용하여 HTTP를 HTTPS로 리디렉션

letsencrypt SSL을 사용하고 있습니다. domain.com으로 사이트에 액세스하면 다음으로 리디렉션됩니다.https://domain.com하지만 나는 원한다https://www.domain.com!

www가 있는 사이트에 액세스하기 위해 DNS 패널에 domain.com의 별칭으로 www를 추가했습니다. 하지만 이제 이중 리디렉션이 발생합니다.

첫 번째 리디렉션: domain.com에서 https:// domain.com으로, 두 번째 리디렉션: 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://domain.com301 리디렉션이 트리거되기 전에 domain.com에 대한 SSL 핸드셰이크가 발생합니다.

각 도메인마다 별도의 인증서를 갖고 이에 따라 인증서 경로를 조정할 수도 있다고 가정합니다.

관련 정보