【问题标题】:Nginx not properly re-directing when user types https://用户键入 https:// 时 Nginx 无法正确重定向
【发布时间】:2016-10-13 04:09:15
【问题描述】:

我有几个重定向,以确保所有域和变体都指向当前的主要位置:

#redirects www
server {
    server_name www.blah.net;
    return 301 https://blah.org$request_uri;
}

server {
    server_name www.blah.co;
    return 301 https://blah.org$request_uri;
}

#redirects co and net to org
server {
    server_name blah.co;
    return 301 https://blah.org$request_uri;
}

server {
    server_name blah.net;
    return 301 https://blah.org$request_uri;
}

#redirects all traffic to https
server {
    listen *:80 default_server;

    location / {
        return 301 https://$host$request_uri;
    }
}

#main server
server {
    listen *:443 ssl;
    ssl on;

    ssl_certificate /etc/letsencrypt/live/www.blah.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.blah.org/privkey.pem;

    root /home/blah/www;
    index index.html index.htm;

    server_name blah.org blah.co blah.net;
}

问题是我们的顶级谷歌搜索结果有一个指向https://blah.co 的链接,当您单击它时,它会给出证书错误。我知道问题出在哪里,我只是不知道如何修复重定向,以便当有人点击包含https 的链接或输入https://blah.co 时,它会解析为https://blah.org

【问题讨论】:

  • 获取blah.co的有效证书
  • @AlexeyTen 关键是要避免这种情况 - 并将所有流量重定向到 blah.org 这是唯一具有有效证书的站点。
  • https 的意义在于让这种情况无法避免

标签: ssl nginx ssl-certificate


【解决方案1】:

我认为这样的事情会奏效。第一个块应该捕获不是https://blah.org 的任何流量,并将其重定向。第二个服务器块只处理 blah.org 域。

# redirects all non-.org traffic to https
server {
    listen *:80 default_server;
    listen *:443 ssl;

    ssl_certificate /etc/letsencrypt/live/www.blah.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.blah.org/privkey.pem;

    server_name _;

    location / {
        return 301 https://blah.org$request_uri;
    }
}

#main server
server {
    listen *:443 ssl;
    ssl on;

    ssl_certificate /etc/letsencrypt/live/www.blah.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.blah.org/privkey.pem;

    root /home/blah/www;
    index index.html index.htm;

    server_name blah.org;
}

【讨论】:

  • 这仍然需要有效的证书
  • @AlexeyTen 我并不是在反对你,但是我在生产环境中的工作正好相反。我们 301 将所有 non-https non-www 流量重定向到 domain.com,而我们只有通配符 ssl 证书。甚至http://ip-address 也能正确重定向。
猜你喜欢
  • 2018-07-11
  • 2020-02-09
  • 2016-04-27
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2021-06-01
  • 2017-04-02
  • 1970-01-01
相关资源
最近更新 更多