Nginx

Nginx 使用 SSL 重定向 2 個域,包括 www

  • August 21, 2018

我有一個域的 .com 和 .co.uk 版本。我希望這些(包括 www 子域)的每個組合都重定向到 https .co.uk 版本。

通過每種組合,我的意思是以下所有內容都應重定向到https://example.co.uk.

http://example.com
https://example.com
http://www.example.com
https://www.example.com
http://example.co.uk
http://www.example.co.uk
https://www.example.co.uk

我想我已經通過以下方式實現了這一點:

server {
 listen 443 ssl http2;
 server_name example.co.uk;

 ssl_certificate /etc/letsencrypt/live/example.co.uk/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/example.co.uk/privkey.pem;
 include /etc/letsencrypt/options-ssl-nginx.conf;
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

 root /var/www/example.co.uk;
 index index.html;
}

server {
 listen 80;
 server_name example.co.uk;
 return 301 https://example.co.uk$request_uri;
}

server {
 listen 443 ssl;
 server_name www.example.co.uk;
 return 301 https://example.co.uk$request_uri;
}

server {
 listen 80;
 server_name www.example.co.uk;
 return 301 https://example.co.uk$request_uri;
}

server {
 listen 443 ssl;
 server_name example.com;
 return 301 https://example.co.uk$request_uri;
}

server {
 listen 80;
 server_name example.com;
 return 301 https://example.co.uk$request_uri;
}

server {
 listen 443 ssl;
 server_name www.example.com;
 return 301 https://example.co.uk$request_uri;
}

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

唯一的事情是,當我嘗試https://example.comhttps://www.example.com它給我一個瀏覽器隱私錯誤頁面時。

我是否需要為兩個域和兩個 www 子域獲取單獨的 SSL 證書才能使此設置正常工作?所以我最終會得到4個證書?

最簡單的方法是獲取一個與您的所有域名匹配的證書。一個證書可以匹配多個名稱,稱為主題備用名稱 (SAN)。

您可以從 Let’s encrypt 免費獲得這樣的證書,您只需安排對所有域名進行驗證。

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