letsencrypt on nginx和non-www https to www https redirect

时间:2017-02-07 16:16:44

标签: nginx lets-encrypt

我在运行Nginx的网络服务器上设置了一个letsencrypt SSL证书。

http到https重定向非www和www工作正常。 直接进入https://www.example.com工作。 https非www不起作用,浏览器返回拒绝连接。

所以: http://example.comhttps://www.example.com

http://www.example.comhttps://www.example.com

工作

https://example.comhttps://www.example.com

不起作用

我的网站conf

server {
 listen 80;
 server_name example.com www.example.com;
 return 301 https://www.example.com$request_uri;
}

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

  #ssl certs locations etc.

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

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

  #ssl certs locations etc.

  #rest of main block
}

使用命令(certbot-auto创建了letsencrypt证书,因为服务器正在运行较旧的Linux发行版):

certbot-auto certonly -n -a webroot --webroot-path=[path to webroot] -d example.com -d www.example.com --email foo@example.com --agree-tos

看过其他类似的问题之后,nginx conf应该可行。 我的理解是,我创建证书的方式意味着有一个example.com和www.example.com的证书。

当我加载网站并查看证书时,两者都列在主题备用名称下。

1 个答案:

答案 0 :(得分:1)

解决。原来是一个DNS设置问题。有一个注册商定制的域名转发器,用于example.com到www.example.com。删除它并为example.com添加A记录修复了所有内容。