V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
retanoj
V2EX  ›  NGINX

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

  •  
  •   retanoj · 2018-05-25 19:48:32 +08:00 · 2481 次点击
    这是一个创建于 2134 天前的主题,其中的信息可能已经有所发展或是发生改变。

    遇到一个奇怪的问题,来源于一次失误的配置。期间发现 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 在哪段代码中对上述现象做了妥善的处理。还望各路大神赐教

    2 条回复    2018-06-12 09:37:55 +08:00
    monbai
        1
    monbai  
       2018-06-11 05:17:36 +08:00 via Android
    感觉第一种也不能正常用吧
    retanoj
        2
    retanoj  
    OP
       2018-06-12 09:37:55 +08:00
    @monbai try it
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5623 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:06 · PVG 14:06 · LAX 23:06 · JFK 02:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.