Leiten Sie HTTP mit WWW in Nginx auf HTTPS um

Leiten Sie HTTP mit WWW in Nginx auf HTTPS um

Ich verwende letsencrypt ssl. Wenn ich auf eine Site mit domain.com zugreife, werde ich umgeleitet aufhttps://domain.comaber ich möchtehttps://www.domain.com!

Ich habe www als Alias ​​für domain.com im DNS-Panel hinzugefügt, um auf die Site mit www zuzugreifen. Aber jetzt bekomme ich eine doppelte Umleitung.

Erste Weiterleitung: domain.com zu https:// domain.com, Zweite Weiterleitung: https:// domain.com zu https:// www.domain.com

Ich möchte dies mit einer einzigen 301-Umleitung erreichen. Habe bereits mehrere in SF angegebene Lösungen ausprobiert, aber es hat nicht funktioniert. Hat jemand eine Idee?

Antwort1

Vorausgesetzt, Sie haben Zugriff auf die Nginx-Konfiguration und Ihr Letsencrypt-Zertifikat enthält sowohl domain.com als auch www.domain.com, sollte etwa Folgendes funktionieren:

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
}

Ich glaube, das SSL-Zertifikat muss beide Domänen enthalten, denn bei Anfragen anhttps://domain.comDer SSL-Handshake für domain.com erfolgt, bevor die 301-Weiterleitung ausgelöst wird.

Ich nehme an, Sie könnten auch separate Zertifikate für jede Domäne haben und die Zertifikatspfade entsprechend anpassen.

verwandte Informationen