Nginx
在 nginx(同一伺服器)中與萬用字元和根域共享兩個 SSL 證書
我為我的域結構購買了一個萬用字元證書和一個證書:
app.example.com => single *.app.example.com => wildcard
這兩個路由都應該指向同一伺服器上的同一個項目目錄
注意:RapidSSL Support 說我必須購買兩個,因為與經典域 example.com 不同,我的一個是 app.example.com,所以萬用字元不會關心我的 3 個十進制根
現在,我需要在 nginx 中設置兩個不同的證書。我的預設一個(適用於我的萬用字元),但不是“app.example.com”,因為它的 ssl 證書不包括在內。
server { listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl on; ssl_certificate /etc/ssl/ssl_certificate.cer; // this is my wildcard cert ssl_certificate_key /etc/ssl/private.key; root /var/www/example/public; index index.php index.html index.htm; server_name .app.example.com; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } // And for redirect: server { listen 80 default_server; listen [::]:80 default_server; server_name .app.example.com; return 301 https://$server_name$request_uri; }
如何將其分為兩部分並包含我的 app.example.com 的新證書並保留萬用字元?
使用兩個
server
塊,一個用於單個域,一個用於萬用字元域。指定適當的server_name
和ssl_certificate
指令。server { listen 443 ssl; listen [::]:443 ssl; server_name *.app.example.com; ssl_certificate /etc/ssl/ssl_certificate1.cer; ssl_certificate_key /etc/ssl/private1.key; ... } server { listen 443 ssl; listen [::]:443 ssl; server_name app.example.com; ssl_certificate /etc/ssl/ssl_certificate2.cer; ssl_certificate_key /etc/ssl/private2.key; ... }
有關詳細資訊,請參閱此文件。
您可以使用
include
指令將通用配置從其他文件中提取到每個塊中。