首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx HTTPS 301重定向到另一个TLD (托管在同一服务器上),而不显示SSL警告

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

Stack Overflow用户
提问于 2014-08-08 05:57:49
回答 2查看 3K关注 0票数 1

我拥有这些域名

代码语言:javascript
复制
     example.com,  .com.au,  .net,  .net.au, ...  (8 in total).

我希望所有这些TLD都重定向到安全的.com域

https://www.example.com

我让它在所有HTTP请求中使用Nginx,但不是所有HTTPS。

我已经为https://www.example.com安装了一个SSL证书,它适用于www和non,没有任何安全警告(正如预期的那样)。

当浏览http://example.net时,我会在没有安全警告的情况下被重定向到https://www.example.com。然而,当浏览到https://example.net时,我会收到可怕的安全警告。

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

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

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

我是否可以使用任何Nginx或DNS欺骗来避免其他(非.com TLD)的标准安全警告,而不必支付更多IP地址和SSL证书?

我想,在开始购买所有所需的证书之前,我最好先问问智囊团的信任。

下面是我的Nginx配置:

代码语言:javascript
复制
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
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 06:17:03

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

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

票数 1
EN

Stack Overflow用户

发布于 2016-10-15 20:38:09

通过将第一个重定向服务器设置为默认值,我成功地完成了类似的任务。然后第二个更具体的服务器处理所有的流量。注意对default_server和server_name的更改。我的证书没有分配给IP地址,只有域名,并且在Chrome中没有错误地进行重定向,但是在Safari中,它在访问https://<the-ip>的测试中弹出了一个警告。

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25196891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档