我们有一个应用程序,我们为每个客户的安装使用子域。所以我们有customer1.ourapp.com,customer2.ourapp.com,customer3.ourapp.com等。
由于安全性,我们希望将所有http重定向到https,因为我们有一个通配符SSL证书。 此外,一些客户并不精通技术并在其域名中添加www,因此您可以获得以下内容:http://www.customer1.ourapp.com或https://www.customer1.ourapp.com。在这些情况下,由于子子域,SSL证书无效。
我正在尝试为nginx编写vhost配置,以便在这两种情况下进行正确的重定向。我得到http到https重定向工作:
server {
listen 80;
server_name *.ourapp.com;
#Rewrite all nonssl requests to ssl.
return 301 https://$host$request_uri$is_args$args;
}
正确使用网址:
server {
listen 443;
server_name *.ourapp.com;
#Rest of config
}
尝试子域名,但它不匹配:
server {
server_name "~^(.*)\.(.*)\.ourapp\.com$";
return 301 https://$2.ourapp.com$request_uri;
}
知道如何让这个工作吗?
答案 0 :(得分:1)
Wildcarded服务器优先于regexp'ed,并匹配'www ...'。 您可以对两种情况使用一个定义:
server_name ~ ^(?:.*\.)?(.*)\.ourapp\.com$;
return 301 https://$1.ourapp.com$request_uri;