
遇到一个奇怪的问题,来源于一次失误的配置。期间发现 tengine 一切正常,原版 nginx 却存在问题。
问题描述: nginx 配置中两个 server 块监听相同端口 443,不同 server_name,不同协议。具体如下
#server_a server { listen 443; server_name a.com; ssl on; ssl_certificate /private.crt; ssl_certificate_key /private.key; location / { proxy_pass http://1.1.1.1; } } #server_b server { listen 443; server_name b.com; location / { proxy_pass http://1.1.1.1; } } 在 tengine-2.1.0 中,server_a 与 server_b 顺序无关,访问 https://a.com 和 https://b.com 均正常。
在 nginx/1.10.1 中,server_a 在前 server_b 在后,未发生问题。而 server_b 在前,server_a 在后,会报 SSL_PROTOCOL_ERROR 错误,日志显示 nginx 会把 https://a.com 的请求当做 http 请求来解析。
能力不济,未能具体定位到 tengine 在哪段代码中对上述现象做了妥善的处理。还望各路大神赐教
1 monbai 2018 年 6 月 11 日 via Android 感觉第一种也不能正常用吧 |