ngx_stream_ssl_preread_module模块(1.11.5)允许从ClientHello消息中提取信息,而无需终止 SSL/TLS,例如,通过SNI请求的服务器名称或在ALPN中通告的协议。默认情况下未构建此模块,应使用--with-stream_ssl_preread_module配置参数启用它。

在preread阶段启用从 ClientHello 消息中提取信息。

Embedded Variables

$ssl_preread_protocol

  • 客户端支持的最高 SSL 协议版本(1.15.2)

SSL/TLS协议运行机制的概述 - 阮一峰的网络日志https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

​SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。​

$ssl_preread_server_name

  • 通过 SNI 请求的服务器名称

什么是 SNI? - PamShao - 博客园参考: 链接1 链接2 介绍 是什么:SNI(Server Name Indication)是 TLS 的扩展,这允许在握手过程开始时通过客户端告诉它正在连接的服务器的主机名称。 作用:用来解决一个服https://www.cnblogs.com/pam-sh/p/13409492.html

$ssl_preread_alpn_protocols

  • 客户端通过 ALPN(1.13.10)发布的协议列表。这些值用逗号分隔。

ALPN协议_心梦无痕-CSDN博客_alpn协议介绍ALPN (Application Layer Protocol Negotiation)是TLS的扩展,允许在安全连接的基础上进行应用层协议的协商。ALPN支持任意应用层协议的协商,目前应用最多是HTTP2的协商。在2016年,ALPN已经完全替代NPN了。ALPN allows the application layer to negotiate which protocol t...https://blog.csdn.net/laing92/article/details/104366381

ALPN(Application Layer Protocol Negotiation) - 南极冰川雪 - 博客园ALPN (Application Layer Protocol Negotiation)是TLS的扩展,允许在安全连接的基础上进行应用层协议的协商。ALPN支持任意应用层协议的协商,目前应用最多是Hhttps://www.cnblogs.com/rainboy2010/p/12686843.html

  • 测试HTTP/2支持的在线工具(需FQ):https://tools.keycdn.com/http2-test

打开nginx的ssl_preread on,使nginx预处理ssl握手client hello字段,通过读取alpn字段为identifyssh(可自定义)字符串 判断出是ssh连接,否则(兼容非ssl连接)都是http连接,分别指向不同的upstream。

ssh 连接命令
ssh deploy@120.221.95.76 -o "ProxyCommand openssl s_client -alpn Qdeicc@9902 -ign_eof -connect 120.221.95.76:8086"

Nginx - Module ngx_stream_ssl_preread_module | Docs4devnginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.https://www.docs4dev.com/docs/en/nginx/current/reference/stream-ngx_stream_ssl_preread_module.html

Nginx支持SNI转发 - 简书SNI是一个TLS的扩展字段,经常用于访问域名跳转到不同的后端地址。 配置方式如下:打开nginx.conf文件,以ttbb/nginx:nake镜像为例/usr/local...https://www.jianshu.com/p/31f1968d36f8

利用nginx实现https和ssh共用端口绕过防火墙限制ssh登录的方法 - 醒袭z - 博客园1.前提 nginx > 1.15.2版本 2.实现的原理 nginx 1.15.2版本以后,新增了一个新特性$ssl_preread_protocol,可以让tcp stream proxy区https://www.cnblogs.com/xingxiz/p/11162610.html

其他实现:

Linux 如何做到 ssh/http 共用 80 端口?_技术解析_文章_数据地带

sslh

Yves Rutschle's Homepage

yum install libconfig libconfig-develyum install --downloadonly --downloaddir=. epel-release
rpm -ivh --nodeps --force ./epel-release-7-11.noarch.rpm (是否需要安装?)wget http://rpmfind.net/linux/epel/7/x86_64/Packages/s/sslh-1.20-1.el7.x86_64.rpm
rpm -ivh --nodeps --force ./sslh-1.20-1.el7.x86_64.rpmsystemctl status sslh
修改sslh.cfg文件 vi /etc/sslh.cfg 参考more /usr/share/doc/sslh-1.20/example.cfg问题1:客户端访问ip丢失
问题2:如何限定访问ip

HAProxy

让一个端口同时做两件事:http/https和ssh - chen110xi - 博客园

Http tunnel技术介绍_G-CSDN博客_http tunnel

nginx 分发 ssh相关推荐

  1. 巧用ftp命令(一)--利用ftp分发ssh密钥

    手里有10几台服务器,领导不允许使用监控及配置工具进行主机管理,决定利用ftp进行一些服务器的批量配置工作.首先为了能够使用root在各个服务器之中实现无密码穿梭,第一件事就是分发ssh密钥:首先在脚 ...

  2. Nginx转发ssh服务

    Nginx转发ssh服务 一.需求 二.nginx配置 一.需求 当前置机需要转发内网主机的ssh端口号,方便外网直连服务器. 二.nginx配置 注:与events, http同级,配置stream ...

  3. 使用ansible 批量分发SSH Key

    先确保你电脑有ansible,我是mac的用brew安装,其他可用yum安装 brew search ansible brew install ansible 我已经安装好2.7了 生成下自己的key ...

  4. nginx代理ssh端口

    概述 某些情况,服务器不暴露22端口,我们可以通过nginx代理22端口,实现ssh远程登录. 通常nginx反向代理是代理七层的http协议,其实nginx也可以进行四层协议代理. 配置 注意str ...

  5. 乘风聚合图床源码 多接口

    文章目录[隐藏] 源码介绍 源码截图 源码介绍 纯PHP源码无后台,有能力自己加后台,非常简约精美,11个接口,大部分都可以使用.代码全开源无加密! 源码截图 附 件 下 载 文件名称:乘风聚合图床源 ...

  6. ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:

    使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y接下来我们就可以使用s ...

  7. 安装OpenResty,实现分发层、应用层nginx+lua开发(附加问题:bad argument #2 to ‘set_keepalive‘ (number expected, got nil)

    1. 安装OpenResty 1.1 在 /usr 目录下创建servers目录,并进入该目录执行 yum install -y readline-devel pcre-devel openssl-d ...

  8. nginx css 304 导致图片丢失_Nginx 从入门到实战

    优质文章,及时送达 作者 | 海岛 来源 | sf.gg/a/1190000014893012 上篇 | 10 个让你笑的合不拢嘴的 GitHub 项目 基础篇 一.环境 服务器版本:CentOS 7 ...

  9. 基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是CSRF? 已经有很多博文讲解其过程和攻击手段,在此就不重复了. O(∩_∩)O 不清楚的同学,请自行搜索或按链接去 ...

最新文章

  1. python和idl_有前辈对比过IDL和Python的速度吗,哪个会快点?
  2. WOJ 1204 继续找相同
  3. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )
  4. 5分钟学习基于Go,go-microservice-template,Minke的微服务
  5. Android——怎么在一个 Activity 中销毁另外一个 Activity
  6. string替换_GEE数据类型—String,Number
  7. Docker 解决容器时间与主机时间不一致的问题三种解决方案
  8. 《Linux内核设计与实现》读书笔记(十二)- 内存管理
  9. Leetcode题库 15.三数之和_0(双指针 C实现)
  10. 美国人用什么android手机,美国人最爱的安卓手机:多年稳居榜首,与iPhone共分一杯羹...
  11. java清理语句,java – 如何在不使用准备语句的情况下对SQL进行清理
  12. JSTL 表达式与 EL 语言
  13. Error:Cannot find module 'stylus'
  14. Struts2学习笔记(六) 结果(Result)(上)
  15. DYNAMIC_DOWNCAST STATIC_DOWNCAST IsKindOf
  16. 普林斯顿大学计算机科学研究生条件,普林斯顿大学之计算机科学系
  17. mysql中Group_concat,查找列名,将字符串转换为数字比较大小等杂项记录
  18. python接口自动化4-绕过验证码登录(cookie) (转载)
  19. 常见c语言语法错误,C语言常见语法错误.doc
  20. #10098. 「一本通 3.6 例 1」分离的路径

热门文章

  1. 计算机的主机主要由什么器件组成,计算机的主机主要是由()等器件组成。此题为多项选择题。_考试资料网...
  2. python毕业设计作品基于django框架校园新生报到系统毕设成品(4)开题报告
  3. java web网上书店_java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇...
  4. sas libname mysql_SAS--数据操作
  5. 平安科技性格测试凉经
  6. 不做七种危险的网络管理员
  7. 数据结构(c语言版)(第三版)实验1
  8. iphone for PPT遥控器 MyPoint PowerPoint Remote
  9. 论述rfid与物联网关系
  10. 求知讲堂python+人工智能day8