我如何告诉 nginx 仅为一个域提供 SSL 服务?

我如何告诉 nginx 仅为一个域提供 SSL 服务?

是的,这与这个问题然而,根据ngnx文档“配置 HTTPS 服务器“(“单一 HTTPS 服务器”部分),这个限制不再存在,并且该问题的答案不再有效。

来自上面的链接:

在 0.7.14 之前,无法选择性地为各个侦听套接字启用 SSL,如上所示。只能使用 ssl 指令为整个服务器启用 SSL,因此无法设置单个 HTTP/HTTPS 服务器。添加了 listen 指令的 ssl 参数来解决此问题。因此,不鼓励在现代版本中使用 ssl 指令。

但是,按照该文档中规定的方式设置服务器块:

server {
        listen *:80;
        listen 443 ssl;

        server_name  example.com *.example.com;
[...]

... nginx 仍将在发出example.com请求时提供内容。https://example.net

我知道 SSL 是在 HTTP 请求之前提供的,但必须有某种方法来阻止服务器响应没有关联有效 SSL 证书的 SSL 请求。

非常感谢对此的任何见解。

答案1

必须有某种方法来阻止服务器响应没有有效 SSL 关联的 SSL 请求

嗯,有点。由于您有多个网站在同一个 IP 上运行,因此用户尝试与该 IP 建立 SSL 连接对于任何网站将始终建立其 SSL 连接(如果它们指向证书未涵盖的主机名,则可能会出现证书错误)。

为防止这种情况,您可以做的就是不要让 SSL 监听该 IP(在不同的地址上运行您的 SSL 内容)。

如果您同意他们获得带有潜在错误的 SSL 连接,那么您可以选择;不是从启用 SSL 的服务器获取内容server,而是默认让他们获得 403 错误或重定向到他们发送请求到的主机名的 http 侦听器 - 这些选项之一对您的系统有意义吗?

答案2

如果该域名没有 SSL,您将收到浏览器 SSL 错误,并且连接关闭...
错误代码:ERR_SPDY_PROTOCOL_ERROR

    server {
        listen 80;
        return 444;
    }

    server {
        listen 443;
        ssl_certificate     /etc/ssl/my.crt;
        ssl_certificate_key /etc/ssl/my.key;
        return 444;
    }

## no SSL domain
server {
        listen 80;
        server_name  domain.com *.domain.com;
}

## SSL domain
    server {
            listen 80;
            listen 443 spdy ssl;
            server_name  SSLdomain.com *.SSLdomain.com;

    }

答案3

我们将所有另一个域重定向到一个文件夹,在此文件夹中创建索引文件,其中元机器人为noindex

server {
    listen   443;
    server_name yourdomainusessl.com;
    ssl on; 
    ssl_certificate      /etc/nginx/conf.d/ssl/....crt;
    ssl_certificate_key  /etc/nginx/conf.d/ssl/....key;
    ssl_trusted_certificate  /etc/nginx/conf.d/ssl/....crt; 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
    if ($host = 'yourdomainusessl.com' ) {
         return 301 https://www.yourdomainusessl.com$request_uri;
    }
    if ($host !~* 'yourdomainusessl.com' ) {
         return 301 http://somewhereyouwant.com;
    }
}

相关内容