nginx 301重定向不适用于443 ssl,为什么......?

时间:2018-01-26 10:18:51

标签: ssl redirect nginx

我尝试从旧域重定向到新域。

旧域曾经拥有SSL证书,但它不再具备。

所以我需要301重定向这些:

  • http://olddomain.co.uk
  • http://www.olddomain.co.uk
  • https://olddomain.co.uk
  • https://www.olddomain.co.uk

全部:https://www.newdomain.co.uk

这是我的配置:

server {
  listen       80;
  listen       443 ssl;
  server_name  olddomain.co.uk www.olddomain.co.uk;
  return       301 https://www.newdomain.co.uk;
}

我正在使用http://www.redirect-checker.org进行测试。

http网址的重定向都很好,但根本找不到https网址,就好像这个服务器指令没有抓住{ {1}}网址

  • 是因为我需要SSL证书,即使我没有提供任何服务......?
  • 是否仍需要SSL证书,只是为了重定向..?
  • 如果没有,为什么这不起作用..?

修改

要明确的是,我没有看到证书错误,Chrome表示"此网站无法访问",它对证书没有任何说明。 redirect-checker.org说"找不到网址"。

编辑2

我找到了另一个https文件,该文件正在运行(所有4个网址,包含.conf,重定向,未安装证书)。这是复制粘贴的:

https

这些全部重定向:

  • server { listen 80; listen 443 ssl; server_name thepreventduty.com www.thepreventduty.com; return 301 $scheme://www.thepreventduty.co.uk$request_uri; }
  • http://thepreventduty.com
  • http://www.thepreventduty.com
  • https://thepreventduty.com

https://www.thepreventduty.com,我没有https://www.thepreventduty.co.uk的ssl证书。

您可以在此处查看是否有效:http://www.redirect-checker.org/

当我为另一个域添加另一个thepreventduty.com时(我在.conf中使用include websites/*.conf;),完全相同的nginx.conf指令,只更改了域名 - 它没有用!

为什么..?

1 个答案:

答案 0 :(得分:0)

HTTPS连接表示SSL会话中的HTTP连接。 要建立SSL会话,您需要证书和密钥。

来自nginx的官方网站:

  

要配置HTTPS服务器,必须在服务器块中的侦听套接字上启用ssl参数,并且应指定服务器证书和私钥文件的位置

因此,您需要指定证书和密钥的位置。 如果SSL不正确,您将在重定向之前收到证书错误。

我建议您使用acme.sh获取有效的证书和密钥。

首先,您需要临时禁用重定向并指定旧域的根目录。

然后按照说明操作: https://github.com/Neilpang/acme.sh

完成后,启用重定向。

相关问题