Redirect Nginx通配符子域重定向到非www

Redirect Nginx通配符子域重定向到非www,redirect,ssl,nginx,no-www,Redirect,Ssl,Nginx,No Www,我用通配符子域设置了一个域,用于白标签访问。我试图防止人们输入http://www.subdomain.domain.com/但仍在努力寻找解决方案。(我已经进行了重写,以便始终使用安全协议。) 我目前的设置如下(好的,相关部分): 我所取得的成就是http://domain.com和http://sub.domain.com都重定向到https协议,换句话说https://domain.com和https://sub.domain.com。我仍然希望在顶部实现的是这两个http://www.d

我用通配符子域设置了一个域,用于白标签访问。我试图防止人们输入
http://www.subdomain.domain.com/
但仍在努力寻找解决方案。(我已经进行了重写,以便始终使用安全协议。)

我目前的设置如下(好的,相关部分):

我所取得的成就是
http://domain.com
http://sub.domain.com
都重定向到
https
协议,换句话说
https://domain.com
https://sub.domain.com
。我仍然希望在顶部实现的是这两个
http://www.domain.com
https://www.domain.com
重定向到
https://domain.com
和这两个
http://www.sub.domain.com
https://www.sub.domain.com
重定向到
https://sub.domain.com

有人能帮忙吗


(注:我甚至在考虑应用全局nginx设置来删除同一服务器上运行的所有域的URL的
www
部分,如果这是一个选项。)

要从请求的服务器名称中删除前导的
www.
序列,请将此
if
块放在SSL服务器容器顶部附近(在任何其他URI处理指令之前):

通常情况下,如果,则为
,但在这种情况下是完全正确的

server {
    listen 80;
    server_name  domain.com *.domain.com;
    rewrite ^ https://$http_host$request_uri? permanent;
}

server {
    listen 443;
    ssl on;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/certificate.key;
    server_name domain.com *.domain.com;

    ...
}
if ($http_host ~* ^www\.(.*)$ ) 
{ 
    return 301 $scheme://$1$request_uri;
}