Ssl-Certificate

使用 SSL 和動態 dns 將 SLD 重定向到註冊商上的子域

  • October 30, 2020

我想在註冊商本身(但在自己的伺服器上)沒有 SSL 證書的情況下將https://example.com二級域重定向/轉發到子域。https://www.example.com

我的問題是,我沒有靜態 IP,所以不能使用 A-Record / AAAA-Record,只能使用 DynDNS 地址。還嘗試了 Alias / A-Name,但他們只將 SLD 重定向到 SLD。簡單轉發不考慮SSL,只考慮簡單http。我也很滿意,通過自己的伺服器重定向它,但 SLD 無論如何都不能轉發到我的伺服器,因為它必須通過動態 dns 服務(只有子域)連接。

(擁有 namecheap 作為註冊商和 DynDns)

我找到了 FreeCodeCamp 的這篇文章,他們發布了解決方案。

您必須使用 ALIAS 記錄(可以與 CNAME 記錄結合使用)。

  • ALIAS在 DNSimplenamecheap
  • ANAME在 DNS 變得簡單
  • ANAME在easyDNS
  • CNAME(虛擬)在 CloudFlare

某些提供商沒有這些選項(例如 United Domains),您可能必須轉移到其他提供商。

然後你必須在你的伺服器上添加兩個 SSL 證書,在 NGINX 中看起來像這樣:

server {
   # Forward http://www.example.com, http://example.com to https://

   listen 80;
   listen [::]:80;
   
   server_name www.example.com example.com;

   return 301 https://$http_host$request_uri;
}

server {
   # Forward https://example.com to https://www.example.com

   listen 443 ssl;
   listen [::]:443 ssl;
   
   server_name example.com;
   
   ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot

   return 301 https://www.$host$request_uri;
}

server {
   # handle https://www.example.com

   listen 443 ssl;
   listen [::]:443 ssl;

   server_name www.example.com;
   
   ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot

   root /var/www/example.com;
   index index.html;
}

引用自:https://serverfault.com/questions/1004186