Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect Nginx HTTPS 301重定向到另一个TLD(托管在同一服务器上),而不显示SSL警告_Redirect_Ssl_Nginx_Https_Tld - Fatal编程技术网

Redirect Nginx HTTPS 301重定向到另一个TLD(托管在同一服务器上),而不显示SSL警告

Redirect Nginx HTTPS 301重定向到另一个TLD(托管在同一服务器上),而不显示SSL警告,redirect,ssl,nginx,https,tld,Redirect,Ssl,Nginx,Https,Tld,我拥有这些域名 example.com, .com.au, .net, .net.au, ... (8 in total). 我希望所有这些TLD 301重定向到secure.com域 我使用Nginx处理所有HTTP请求,但不是所有HTTPS 我已为https://www.example.com这适用于www和非www,没有任何安全警告(如预期) 浏览时说http://example.net我被重定向到https://www.example.com没有安全警告。但是,当浏览

我拥有这些域名

     example.com,  .com.au,  .net,  .net.au, ...  (8 in total).
我希望所有这些TLD 301重定向到secure.com域

我使用Nginx处理所有HTTP请求,但不是所有HTTPS

我已为
https://www.example.com
这适用于www和非www,没有任何安全警告(如预期)

浏览时说
http://example.net
我被重定向到
https://www.example.com
没有安全警告。但是,当浏览到
https://example.net
我收到了可怕的安全警告

现在我假设这是因为我只拥有.com SSL证书,而不是其他TLD。此外,所有站点都托管在相同的服务器/ip地址上,因此将为其他TLD返回.com证书

所有域的DNS A记录都指向我的Nginx服务器的单个IP地址

根据我的阅读和理解,我认为我需要一个IP地址和SSL证书,用于我拥有的每个TLD。对于一个简单的重定向来说,这似乎有些过分了

是否有任何Nginx或DNS欺骗手段可用于避免其他(非.com TLD)的标准安全警告 而不必掏钱购买更多的IP地址和SSL证书

我想我最好先问一下智囊团,然后再购买所有必需的证书等

下面是我的Nginx配置:

server {                  # redirect/catch all block
        listen 80;
        listen 443;
        server_name _ .example.com .example.com.au .example.net .example.net.au;
        return 301 https://www.example.com$request_uri;
}

server {
        listen   443 ssl default_server;        # Secure default server block
        server_name www.example.com;

        root /srv/www/example.com/public_html;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;           
        # ...   rest of config
}
根据我的阅读和理解,我认为我需要一个IP地址和SSL证书,用于我拥有的每个TLD。对于一个简单的重定向来说,这似乎有些过分了


重定向是在HTTP层完成的。但在HTTPS中,HTTP层封装在TLS中。这意味着它必须首先成功建立TLS连接,然后才能执行重定向。因此,对于您通过HTTPS访问的所有主机名,它都需要一个正确的证书,即使您只是重定向到另一个主机。

通过将第一个重定向服务器设置为默认值,我成功地完成了类似的任务。然后,第二个更具体的服务器处理所有流量。注意对
default\u server
server\u name
的更改。我的证书没有分配给IP地址,只分配给域名,重定向在Chrome中发生时没有错误,但在Safari中,它会在访问
https://
的测试中弹出警告


谢谢你的确认!协议(和Nginx)是否允许在同一服务器(和IP地址)上使用多个https域(假设我拥有每个域的CA证书)?或者每个安全域都需要一个单独的IP地址?i、 共享主机提供商如何处理这个问题?我的问题是:在建立TLS连接时,主机名是否也被封装,或者nginx是否有权访问它?如果主机名也被封装,那么我猜它依赖于IP地址(来自DNS记录),并且我需要为每个域提供单独的IP。通过服务器名称指示(SNI),您可以在同一IP后面拥有多个证书。nginx支持这一点,也支持所有现代浏览器,但像IE8这样的旧浏览器不支持它。另一种方法是获得一个包含所有必要名称的单一证书。后续:我最终选择了单一证书路径。我以不到200美元的价格从16个SAN(8个www和8个不带www)购买了一个Comodo PositiveSSL多域证书。没有额外的IP地址购买,现在我只有一个证书管理一个IP地址。谢谢你!
server {                  # redirect/catch all block
        listen 80;
        listen 443;
        server_name _ .example.com .example.com.au .example.net .example.net.au;
        return 301 https://www.example.com$request_uri;
}

server {
        listen   443 ssl default_server;        # Secure default server block
        server_name www.example.com;

        root /srv/www/example.com/public_html;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;           
        # ...   rest of config
}
server {
# default for all, except other more-specific blocks
        listen 80 default_server;
        listen 443 ssl default_server;
        server_name _;

        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;

        return 301 https://www.example.com$request_uri;
}

server {
        listen   443 ssl;
        server_name www.example.com;

        root /srv/www/example.com/public_html;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;           
        # ...   rest of config
}