Nginx 单IP下 配置多个server https 启示录
来源:互联网 发布:淘宝联盟怎么设置佣金 编辑:程序博客网 时间:2024/06/07 21:44
今天重新整合https时,出现在浏览器用 htttp能访问 https访问不了的情况
nginx的配置如下:
#其他服务匹配
server {
listen 4080;
listen 443 ssl;
server_name a.szy.net;
charset utf-8;
#ssl_certificate E:/https/113152522630995.pem;
#ssl_certificate_key E:/https/113152522630995.key;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}
#授权服务匹配
server {listen 80;
server_name login.dev.51110.com;
listen 443 ssl;
ssl_certificate ca/uc_oauth.crt;
ssl_certificate_key ca/uc_oauth.key.unsecure;
...
}
绕了一圈才想到去看错误日志:
2017/05/25 14:24:49 [error] 5992#11288: *13 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 172.16.52.100, server: 0.0.0.0:443
2017/05/25 14:24:49 [error] 5992#11288: *14 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 172.16.52.100, server: 0.0.0.0:443
果然,一堆的没有找到证书的错误,但是在上述的配置明明已经设定了ca证书,
那是ca证书被删除了吗?ca证书路径错误?都不是...
没辙了,那就开始找度娘,刚好找到 Nginx 单IP下 配置多个server https 的问题
找到了我想要的答案:ssl的匹配 先于 server的匹配
原文:
事实上,SSL运行在TCP之上(SSL/TLS协议),ssl通过四次握手 和服务器(这里是Nginx,LVS纯转发,可忽略)的IP + PORT(443)建立ssl连接,建立连接之后浏览器才会发送HTTP请求。所以在Nginx收到HTTP请求之后才知道Host,才知道转到哪个server 去处理,所以在SSL连接建立的时候Nginx是不知道用哪个 Server 的SSL配置的,在这种情况下,Nginx会使用它加载到的第一个SSL配置(需验证)。当然如果你在listen 443的后面加上 default_server,Nginx就会使用此SSL配置,即:
listen 443 default_server ssl;
那么对于单域名的https,我更喜欢把SSL配置写在http配置里,在server只需要加上 listen 443 ssl;
虽然里面碰到的问题和我的不大一样,但是里面阐述的 nginx 的 ssl协议请求过程 却让我意识到问题所在
因为我本地的nginx配置文件是从连调环境拷贝过来的,配置中本身有多个开启了 ssl的server,
出于偷懒没有拷贝对应的ca证书,只保留了我想要的那份,结果在使用http访问时一切正常,但是当用https访问时,
需要先建立ssl链接,需要要到ca证书,而在没有 配置 “listen 443 default_server ssl;” 时,默认去找了第一个
server的 ca证书,很不巧又被我给注释了,于是就一直出现找不到ca证书的错误提示
以上:
日志要善用,有问题先看有没有错误日志,在平常的代码书写过程中也要有完善的日志输出,方便定位问题
- Nginx 单IP下 配置多个server https 启示录
- nginx 同一个IP上配置多个HTTPS主机
- nginx 同一个IP上配置多个HTTPS主机
- Nginx 单IP下 配置多个s…
- nginx 配置https server
- linux环境下单网卡配置多个IP地址
- nginx下配置https
- nginx 支持同一个ip 多个https域名
- Nginx一个IP配置多个主机
- nginx配置多个虚拟ip访问
- nginx配置多个IP地址
- Nginx-一个IP配置多个站点
- centos 下nginx 单ip多站点多域名配置 二级域名
- 单网卡配置多个IP
- Ubuntu下配置Nginx HTTPS
- Nginx下的https配置
- windwos下Nginx配置https
- nginx 下https配置实现
- 在构造器中为什么this或super必须放在第一行?
- java内存过高问题定位
- TF/02_TensorFlow_Way/03 Working with Multiple Layers04 Implementing Loss Functions
- KMP算法java实现
- Live555源码解析(2)
- Nginx 单IP下 配置多个server https 启示录
- Unity3d 编辑器 TreeView教程
- AndroidKotLin系列--Android Studio 第一步使用KotLin
- openstack plugin 之(一)怎样写 OpenStack Neutron 的 Plugin
- UIActivityIndicatorView 基本设置
- ORALCE通用函数(NVL,NVL2,NULLIF,COALESCE)
- Box2D基础知识
- MVC框架(二)----前端与后端MVC、MVVM等设计模式区别与联系
- Angular服务注入