2015-12-21 137 views
1

我有一个域设置了通配符子域名,用于白标签访问。我试图防止人们在http://www.subdomain.domain.com/中输入内容,但努力寻找解决方案。 (我已经在行动,始终使用安全协议的改写。)Nginx通配符子域重定向到非www网站

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

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.com,并且http://www.sub.domain.comhttps://www.sub.domain.com也重定向到https://sub.domain.com

请问谁能帮忙?

(PS:我甚至想申请一个全球性的nginx的安装程序删除URL为同一个服务器一次,如果这是一个选项上运行的所有域的www部分。)

回答

1

要删除的领先www.从所请求的服务器名称序列,在附近放置你的SSL服务器容器的顶部(在任何其他URI处理指令)这个if块:

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

一般ifshould be used very carefully,但在这种情况下完美的罚款。