2016-12-06 56 views
1

我最近安裝了LetsEncrypt SSL證書,該證書在我的主域上效果很好,但我也有其他設置爲虛擬主機的子域。但是,所有到子域名的流量現在都會重定向到https,這會導致瀏覽器對隱私進行投訴。如何從nignx的https重寫中排除子域名?

我的主域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;                     │ 
}  

回答

0

我認爲這樣做是定義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

相關問題