我的网站所需的 nginx 配置功能如下。
- 所有到主站点的流量
example.com
都应重定向至https://www.example.com
。所有non-www
到基础域的流量都应重写为www
。 - 所有现有的子域名都需要为我的企业客户保持活动状态并路由到 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 域的证书。