Nginx rewrite 重定向自动识别 http/https

需求

在访问 www.example.com/* 时,通过 Nginx 的配置将用户重定向至 example.com/*。由于网站支持https,需要同时实现以下跳转:

http://www.example.com/* -> http://example.com/*
https://www.example.com/* -> https://example.com/*

但是,根据网络找到的以下方法,无法在同时支持 http/https 的一个 server 配置内实现这个需求。

if ($host ~* www.example.com) {
rewrite ^/(.*)$ http://example.com/$1 permanent;
}

解决

利用 Nginx 的 $scheme 变量,解决此问题。

if ($host ~* www.example.com) {
rewrite ^/(.*)$ $scheme://example.com/$1 permanent;
}

Nginx rewrite 重定向自动识别 http/https》有2个想法

  1. 多弄几个server不就可以了嘛…有的只监听80,有的只监听443,多简单粗暴…

    1. 嗯,这也是一种方法,谢谢补充^^ 我主要是因为server里面的配置多且复杂,所以不太想复制一份

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注