orcwzj 发表于 2018-2-24 12:03:09

单IP下多域名开启SSL问题

请问下军哥,我在一个 IP 上绑了 2 个域名,在给他们先后开启 SSL 后,先前开启 SSL 的域名会跳转到新开启 SSL 的域名,如果我清空新开启 SSL 域名对应的 conf 文件,先前开启 SSL 的域名就能正常访问。VPS 是 CentOS 6 x64,lnmp 用的是 1.4 版本,确认 SNI 是启用的,按理说是支持单 IP 多域名 SSL 的。但是这个跳转问题困扰了我好几天,麻烦军哥指教下,谢谢。
下面贴上我 2 个域名对应的 conf(网站信息以 a,b 代替)

域名 a 的 conf:

server
{
listen 443 ssl;   #lnmp1.3+版本默认支持http2,可以加上http2,lnmp1.2版本默认支持spdy,可以加上spdy
server_name www.a.com;   ##这里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.a.com;            #网站目录
ssl_certificate /etc/letsencrypt/live/www.a.com/fullchain.pem;    #前面生成的证书,改一下里面的域名就行
ssl_certificate_key /etc/letsencrypt/live/www.a.com/privkey.pem;   #前面生成的密钥,改一下里面的域名就行
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

include wordpress.conf;#这个是伪静态根据自己的需求改成其他或删除
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;   #lnmp 1.0及之前版本替换为include fcgi.conf;
#include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log off;
}

server
{
listen 80;
server_name www.a.com a.com;
      location /.well-known/    #这段在续期前还需要在nginx配置下,80端口的虚拟主机上需要添加上,不加的话会无法验证的

{
      add_header Content-Type 'text/plain;';
      root /home/wwwroot/www.a.com; #网站目录

}

      location /

{
      return 301 https://www.a.com$request_uri;

}
}



域名 b 的 conf:

server
{
listen 443 ssl;   #lnmp1.3+版本默认支持http2,可以加上http2,lnmp1.2版本默认支持spdy,可以加上spdy
server_name www.b.com;   ##这里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.b.com;            #网站目录
ssl_certificate /etc/letsencrypt/live/www.b.com/fullchain.pem;    #前面生成的证书,改一下里面的域名就行
ssl_certificate_key /etc/letsencrypt/live/www.b.com/privkey.pem;   #前面生成的密钥,改一下里面的域名就行
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

include wordpress.conf;#这个是伪静态根据自己的需求改成其他或删除
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;   #lnmp 1.0及之前版本替换为include fcgi.conf;
#include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log off;
}

server
{
listen 80;
server_name www.b.com b.com;
      location /.well-known/    #这段在续期前还需要在nginx配置下,80端口的虚拟主机上需要添加上,不加的话会无法验证的

{
      add_header Content-Type 'text/plain;';
      root /home/wwwroot/www.b.com; #网站目录

}

      location /

{
      return 301 https://www.b.com$request_uri;

}
}

licess 发表于 2018-2-24 16:03:38

贴出的配置文件没有问题,按反馈必读要求 自己测试nginx配置文件看一下
1.4的有自动工具不需要手动写配置文件

orcwzj 发表于 2018-2-24 16:44:56

回复 2# 的帖子

执行 /usr/local/nginx/sbin/nginx -t
返回显示没问题。。。

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

licess 发表于 2018-2-25 08:47:58

目前已有的信息看无法判断

kayuk 发表于 2018-11-14 12:10:58

www.a.com/fullchain.pem;    #前面生成的证书,改一下里面的域名就行


证书里面还可以改名的吗?
要怎么改?
那样是不是就只要申请一次通配符ssl后不用多次申请个别二级域名ssl了?

licess 发表于 2018-11-14 15:50:23

回复 5# 的帖子

生成的证书是什么名字就用什么名字
所有该域名的二级域名都用这个通配符证书就可以了
页: [1]
查看完整版本: 单IP下多域名开启SSL问题