使用 nginx 将主站点流量从非 www 路由到 www,同时保持子域名处于活动状态

使用 nginx 将主站点流量从非 www 路由到 www,同时保持子域名处于活动状态

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

  1. 所有到主站点的流量example.com都应重定向至https://www.example.com。所有non-www到基础域的流量都应重写为www
  2. 所有现有的子域名都需要为我的企业客户保持活动状态并路由到 https(nike.example.com例如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; 
  } 

}

答案1

您可以设置额外的虚拟主机,仅提供 example.com 服务,即:

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

此外,如果您想使用 tls(https)进行重定向,那么您必须设置虚拟主机并拥有涵盖 example.com 和 www.example.com 域的证书。

相关内容