nginx/tengine 同端口不同协议的配置

2018-05-25 19:48:32 +08:00
 retanoj

遇到一个奇怪的问题,来源于一次失误的配置。期间发现 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.comhttps://b.com 均正常。

在 nginx/1.10.1 中,server_a 在前 server_b 在后,未发生问题。而 server_b 在前,server_a 在后,会报 SSL_PROTOCOL_ERROR 错误,日志显示 nginx 会把 https://a.com 的请求当做 http 请求来解析。

能力不济,未能具体定位到 tengine 在哪段代码中对上述现象做了妥善的处理。还望各路大神赐教

2511 次点击
所在节点    NGINX
2 条回复
monbai
2018-06-11 05:17:36 +08:00
感觉第一种也不能正常用吧
retanoj
2018-06-12 09:37:55 +08:00
@monbai try it

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/457831

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX