【发布时间】:2019-05-20 09:29:33
【问题描述】:
我有一个服务器,托管的网站很少;
为了减少问题,我们假设它们只有两个:http://www.example-A.comhttps://www.example-B.com
站点 A 仅提供 HTTP 连接,而站点 B 拥有自己的 SSL 证书并提供安全连接。
我的配置文件如下所示(相关部分):
http
{
server
{
listen 80;
server_name www.example-A.com;
[...]
}
server
{
listen 80;
server_name www.example-B.com;
return 301 https://www.example-B.com$request_uri;
}
server
{
listen 443 ssl;
ssl_certificate /usr/local/nginx/ssl/www.exampe-A.com.crt;
ssl_certificate_key /usr/local/nginx/ssl/www.exampe-A.com.key;
ssl_prefer_server_ciphers on;
server_name www.example-B.com;
[...]
}
}
现在,如果我连接到 http://www.example-A.com 一切正常。
连接到https://www.example-B.com 也按预期工作。
连接到http://www.example-B.com 会导致重定向到https://www.example-B.com
到目前为止一切顺利。
现在如果我尝试与A 建立安全连接,问题就会出现:https://www.example-A.com
我希望服务器拒绝连接。
我得到的是浏览器警告连接不安全。
当我继续时,我登陆域https://www.example-A.com,但提供www.example-B.com 的内容。
如果我添加到配置中
server
{
listen 443 ssl;
server_name www.example-A.com;
return 444;
}
然后尝试与A 的安全连接按预期失败。
但连接到https://www.example-B.com 也会失败。
我错过了什么?为什么不遵守server_name 指令?
如何在 HTTP 中提供 A,在 HTTPS 中提供 B 并阻止与 A 的不受支持的 HTTPS 连接?
我在跑步
$ nginx -V
nginx version: nginx/1.12.2
built with OpenSSL 1.1.0d 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local --sbin-path=/usr/local/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_ssl_module --with-http_stub_status_module --with-pcre=../pcre-8.37 --add-module=../headers-more-nginx-module-0.33
【问题讨论】:
标签: http nginx https virtualhost