如何在Nignx上重写HTTPS中排除子域



我最近安装了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

最新更新