繁体   English   中英

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

[英]Nginx wildcard subdomain redirect to non-www

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

我目前的设置是这样的(好吧,相关部分):

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;

    ...
}

我实现的是http://domain.comhttp://sub.domain.com都重定向到https协议,换句话说https://domain.comhttps://sub.domain.com分别。 我仍然希望实现的是http://www.domain.comhttps://www.domain.com重定向到https://domain.comhttp://www.sub.domain.comhttps://www.sub.domain.com重定向到https://sub.domain.com

请问有人可以帮忙吗?

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

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

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

通常if 应该非常小心地使用,但在这种情况下完全没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM