Linux

將主站點流量從非 www 路由到 www,同時使用 nginx 保持子域活動

  • August 6, 2019

我的網站的 nginx 配置所需的功能如下。

  1. 所有主要站點的流量example.com都應重定向到https://www.example.com. 到基域的所有non-www流量都應該重寫為www.
  2. 所有現有子域都需要為我的企業客戶端保持活動狀態並路由到 https(例如nike.example.comto https://nike.example.com

在我下面的目前配置中,唯一不起作用的情況是當我在瀏覽器中鍵入內容時https://example.com,瀏覽器向我顯示您的連接不是私有頁面,表明該站點不安全。我知道下面的配置不包括這種情況,但我不知道如何在不殺死所有子域的情況下解決問題。

如何更改此配置文件以涵蓋上述所有情況?

server {
 listen 80 default_server; 
 listen [::]:80 default_server; 
 root /var/www/website;
 index index.html;
 server_name www.example.com;
 server_tokens off;

 if ($http_x_forward_proto = 'http') {
   return 301 https://$host$request_uri; 
 } 

 location / {
   try_files $uri$args $uri$args/ /index.html =404; 
 } 

}

您可以設置額外的虛擬主機,僅服務於 example.com,即:

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

此外,如果您想使用 tls (https) 進行重定向,則必須設置虛擬主機並擁有涵蓋 example.com 和 www.example.com 域的證書。

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