求助,Nginx反代与stream模块如何共用443端口。

47次阅读

共计 3478 个字符,预计需要花费 9 分钟才能阅读完成。

stream 模块如下:问题:一但加入这个 443,我的另一组普通         location / {         反代 443 站点就打不开了,这个 stream 的 sni 反代是可以的。不换端口的情况下,可不可以两组共存呢?stream {# 加一组 map,根据规则过滤 $ssl_preread_server_name(也就是请求的 SNI)    # 将过滤过的 SNI 存入自定义变量 $filtered_sni_name,    # 如果没有匹配到任何规则,则默认为一个 443 端口没有服务的本地回环。    map $ssl_preread_server_name $filtered_sni_name {        ~^(.*|)netflix\\.com$ $ssl_preread_server_name;        ~^(.*|)netflix\\.net$ $ssl_preread_server_name;        ~^(.*|)nflximg\\.com$ $ssl_preread_server_name;        ~^(.*|)nflximg\\.net$ $ssl_preread_server_name;        ~^(.*|)nflxvideo\\.net$ $ssl_preread_server_name;        ~^(.*|)nflxext\\.com$ $ssl_preread_server_name;        ~^(.*|)nflxso\\.net$ $ssl_preread_server_name;        ~^(.*|)fast\\.com$ $ssl_preread_server_name;        default "127.255.255.255";    }    server {        resolver 1.1.1.1;        listen 443;        ssl_preread on;        # 只代理经过 SNI 过滤的流量,        # 其他流量都被丢入不存在的地址         proxy_pass $filtered_sni_name:443;   } hanada 2023-01-07 21:36 2stream 监听 443 端口,没有匹配到规则的域名转发到本地 10443 端口(10443 只是示例),10443 提供反向代理服务 squalll 2023-01-07 21:38 3hanada 发表于 2023-1-7 21:36stream 监听 443 端口,没有匹配到规则的域名转发到本地 10443 端口(10443 只是示例),10443 提供反向代理服务 … 嗯,我也刚想到了这个方法。不知道还需不需要什么端口复用之类的,感觉有点复杂,研究中 hanada 2023-01-07 21:41 4squalll 发表于 2023-1-7 21:38 嗯,我也刚想到了这个方法。不知道还需不需要什么端口复用之类的,感觉有点复杂,研究中 …stream 匹配不上的都 fallback 到 127.0.0.1:10443 就好了啊,http 块的 server 都用 10443 端口监听,10443 就是 http 模块管理的,可以多域名,不想被 fallback 到不存在的域名的话可以在 http 块下也加个默认 server 来拒绝匹配不上的域名请求 squalll 2023-01-07 22:06 5 内容最后由 squalll 于 2023-1-7 22:12 编辑 hanada 发表于 2023-1-7 21:41stream 匹配不上的都 fallback 到 127.0.0.1:10443 就好了啊,http 块的 server 都用 10443 端口监听,10443 就是 htt …    # 如果没有匹配到任何规则,则默认为一个 443 端口没有服务的本地回环。    map $ssl_preread_server_name $filtered_sni_name {        ~^(.*|)netflix\\.com$ $ssl_preread_server_name;        ~^(.*|)netflix\\.net$ $ssl_preread_server_name;        ~^(.*|)nflximg\\.com$ $ssl_preread_server_name;        ~^(.*|)nflximg\\.net$ $ssl_preread_server_name;        ~^(.*|)nflxvideo\\.net$ $ssl_preread_server_name;        ~^(.*|)nflxext\\.com$ $ssl_preread_server_name;        ~^(.*|)nflxso\\.net$ $ssl_preread_server_name;        ~^(.*|)fast\\.com$ $ssl_preread_server_name;       default "127..0.0.1:444";    } 老大能帮看看嘛,我这样写,好像不行。444 端口肯定是没问题的(调成 443 就可以访问)他那个 map 我不太熟,不知道如何写“否则”,是不是就是那个 default?可是 default 改成 127.0.0.1:444 还是不行。(但是这个 location 我改 443 就可以访问)看到你的回复 百度了 Nginx fallback 参数以及 Nginx SNI fallback 等,全都没结果啊。。。能告知下吗 hanada 2023-01-07 23:00 6 内容最后由 hanada 于 2023-1-7 23:03 编辑 squalll 发表于 2023-1-7 22:06# 如果没有匹配到任何规则,则默认为一个 443 端口没有服务的本地回环。    map $ssl_preread_serve … 你多了个。吧。。。还有就是这里没啥特殊符号,没必要外面加双引号的。还有你下面 server 块有:443,这样就变成了 127.0.0.1:444:443 了,当然访问不来哦,可以 443 去掉,https 协议默认就是 443server {        resolver 1.1.1.1;        listen 443;        ssl_preread on;        proxy_pass $filtered_sni_name;   } squalll 2023-01-07 23:27 7hanada 发表于 2023-1-7 23:00 你多了个。吧。。。还有就是这里没啥特殊符号,没必要外面加双引号的。还有你下面 server 块有:443,这样就 … 不是多个。的问题,刚才那属于笔误好像问题就在你说的 443 这上面。之前情况:本地内部页面使用其他端口,比如 1443SNI 使用 443        proxy_pass $filtered_sni_name:443; 结果就是之前那样,只有外部 SNI 的奈飞能打开而内部各种打不开,折腾一晚上了,毫无变化按照您说的:        proxy_pass $filtered_sni_name; 去掉 443 终于有些变化了,成了本地打的开,奈飞打不开了。。。。。似乎问题就在这上,但是如何修改才能俩都打得开呢,不过你的思路是非常对的,问题就在俩人端口不一样上。。。。。hanada 2023-01-07 23:57 8 那你就把端口号也放上去吧 map $ssl_preread_server_name $filtered_sni_name {        ~^(.*|)netflix\\.com$ $ssl_preread_server_name:443;        ~^(.*|)netflix\\.net$ $ssl_preread_server_name:443;        ~^(.*|)nflximg\\.com$ $ssl_preread_server_name:443;        ~^(.*|)nflximg\\.net$ $ssl_preread_server_name:443;        ~^(.*|)nflxvideo\\.net$ $ssl_preread_server_name:443;        ~^(.*|)nflxext\\.com$ $ssl_preread_server_name:443;        ~^(.*|)nflxso\\.net$ $ssl_preread_server_name:443;        ~^(.*|)fast\\.com$ $ssl_preread_server_name:443;       default 127.0.0.1:444;    }

正文完
 0