Pas*_*rbo 42 ssl nginx ssl-certificate vhosts
我很乐意使用nginx来提供具有多个域名和SSL的网站:
两者都使用相同的vhost,所以我只设置server_name两次.问题是,我需要nginx为每个域名提供正确的ssl证书.
这可能是一个虚拟主机还是我需要设置两个虚拟主机?
Rin*_*g Ø 47
编辑2014年11月:初始答案不正确且不完整; 它需要刷新!这里是.
基本上,有两种情况
- 您拥有通配符证书(或多域证书)
在这种情况下,您可以使用多个vhost来侦听相同的IP地址/ https端口,并且两个vhost使用相同的证书(在所有接口上侦听),例如
server {
listen 443;
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
server {
listen 443;
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
Run Code Online (Sandbox Code Playgroud)
或者在特定情况下,两个域都由相同的数据提供服务
server {
listen 443;
server_name webmail.example.com webmail.beispiel.de; # <== 2 domains
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
Run Code Online (Sandbox Code Playgroud)
- 你有两个(+)不同的证书
上面的案例(所有证书都有一个IP)仍可通过服务器名称指示与现代浏览器一起使用.SNI让客户端(浏览器)在请求头中发送它想要访问的主机,允许服务器(nginx)在处理证书之前处理vhost.配置与上面相同,只是每个vhost都有一个特定的证书,crt和key.
(nginx支持SNI从0.9.8f,检查你的nginx服务器是否符合SNI)
(另外,SF谈论SNI和浏览器支持)
否则,如果您想要访问旧版浏览器,则需要多个vhost来监听不同的 IP地址/ https端口,例如
server {
listen 1.2.3.4:443; # <== IP 1.2.3.4
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/certifIP1example.crt;
ssl_certificate_key /var/www/ssl/certifIP1example.key;
...
}
server {
listen 101.102.103:443; <== different IP
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/certifIP2beispiel.crt;
ssl_certificate_key /var/www/ssl/certifIP2beispiel.key;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69257 次 |
| 最近记录: |