我有一个运行 ubuntu 和 nginx 0.8.4 的 ec2 实例,vhosts 使用 http 服务几个不同的域,但一个使用 SSL/https。
安全域配置:
server {
listen 443 ssl;
server_name "securedomain.tld";
ssl_certificate /etc/nginx/certs/securedomain.tld.crt;
ssl_certificate_key /etc/nginx/certs/securedomain.tld.key;
if ($host != $server_name) {
return 444; # this won't work because HTTPS communication has
# been already started, warning message is displayed
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
不安全的域配置:
server {
listen 80;
server_name "unsecuredomain.tld";
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,使用 https 服务的域正在赶上所有托管域的所有https 流量……这意味着https://unsecuredomain.tld/将显示警告并实际提供来自securedomain.tld:(
问题是,有没有办法阻止 nginx 为所有使用 https 提供服务的不安全域提供服务?例如,通过指定您只想接受给定请求主机的 https 连接……
提示:一个 ec2 实例不能有多个 IP 受到影响。
简而言之:不。就 nginx 而言,您已经告诉它所有到端口 443 的连接都是该虚拟主机的 SSL 连接,并且它只是按照您的指示执行。当它可以看到Host:请求中的标头时,SSL 协商已经完成(没有 SNI,这实际上只有在您拥有所有域的证书并且被支持 SNI 的浏览器命中时才会有帮助) 。
| 归档时间: |
|
| 查看次数: |
4082 次 |
| 最近记录: |