我最近安装了Letsencrypt SSL证书,该证书在我的主要域上效果很好,但我还有其他子域,这些子域是作为虚拟主机设置的。但是,现在,所有向子域的流量重定向到HTTP,这导致浏览器抱怨隐私。
我的主要域Nginx配置看起来像:
server { │
listen 80; │
server_name domain.com www.domain.com; │
return 301 https://$server_name$request_uri; │
} │
│
server { │
# Basic configuration │
listen 443 ssl; │
server_name domain.com www.domain.com; │
passenger_enabled on; │
passenger_app_env development; │
root /home/user/path_to_app/public; │
│
# Required for LetsEncryptSSL certificate │
location ~ /.well-known { │
allow all; │
} │
│
# Include SSL config │
include snippets/ssl-domain.com.conf; │
include snippets/ssl-params.conf; │
}
和我的子域配置就是这样:
server { │
#listen 80 default_server; │
server_name app1.domain.com; │
passenger_enabled on; │
passenger_app_env development; │
root /home/app1/app1/public; │
}
我认为,唯一的机会是将server_name
定义为第一个括号中的正则是正则。也就是说,这样的东西
server {
listen 80;
server_name ^(www.domain.com|domain.com)$;
return 301 https://$server_name$request_uri;
}
http://nginx.org/en/docs/http/server_names.html