当前位置: 首页 > 知识库问答 >
问题:

Apache HTTP服务器反向代理发送SNI吗?

乜胜泫
2023-03-14

我希望使用Apache HTTP服务器作为OpenShift或Kubernetes中托管的一组微服务的反向代理。我想在Kubernetes路线上使用TLS passthrough。也就是说,需要在Apache(出站)创建TLS连接,并在POD终止。为了实现这一点,OpenShift需要在不解密有效负载的情况下识别目标主机,以便将每个请求转发给正确的微服务。TLS中的服务器名称指示(SNI)将具有主机名。我尝试了基于Apache的IBM HTTP Server(IHS)。但是,IBM HTTP Server不在出站TLS连接中发送SNI信息。(由IBM HTTP服务器和OpenShift之间的mod代理发起的连接)。OpenShift引发错误。文档中提到IHS在出站端不支持SNI,即使在最新的版本中也是如此。我试图了解最新的Apache HTTP服务器在配置为反向代理时是否可以在出站上发送SNI信息。我找不到任何文件明确提到这一点。谢谢

共有1个答案

幸鸿轩
2023-03-14

我将Apache配置为SSL反向代理,它似乎可以正确地用于SNI部分。尽管没有像你提到的那样清楚地记录下来。

我在跑:

# /usr/local/httpd-2.4.29.tuned/bin/httpd -v
Server version: Apache/2.4.29 (Unix)
Server built:   Dec 24 2017 19:19:13
# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

以下是我转发到www.stackoverflow.com时的conf

SSLEngine on
SSLProxyEngine on
SSLProxyCheckPeerCN Off
SSLSessionTickets on
SSLProxyVerify none
ProxyPreserveHost Off

<IfModule proxy_module>
  ProxyPass             /     https://www.stackoverflow.com/
  ProxyPassReverse      /     https://www.stackoverflow.com/
</IfModule>

下面是一些tcpdump,您可以在2*字符之间的最末端看到SNI

20:27:06.506832 IP XXX.YYY.ZZZ.XXX.14685 > 8.8.8.8.53: 45945+ A? www.stackoverflow.com. (39)
stackoverflow.com......5./...y...........www
20:27:06.520988 IP 8.8.8.8.53 > XXX.YYY.ZZZ.XXX.14685: 45945 5/0/0 CNAME stackoverflow.com., A 151.101.1.69, A 151.101.65.69, A 151.101.129.69, A 151.101.193.69 (117)
stackoverflow.com.............._.................e.E.............eAE.............e.E.............e.E
20:27:06.521566 IP XXX.YYY.ZZZ.XXX.56781 > 151.101.1.69.443: Flags [S], seq 2876049156, win 14600, options [mss 1460,sackOK,TS val 941503620 ecr 0,nop,wscale 7], length 0
E..<3.@.@.u../?q.e.E.....m........9..y.........
8.4.........
20:27:06.535770 IP 151.101.1.69.443 > XXX.YYY.ZZZ.XXX.56781: Flags [S.], seq 3281327361, ack 2876049157, win 28960, options [mss 1460,sackOK,TS val 967826870 ecr 941503620,nop,wscale 9], length 0
E..<..@.<..q.e.E./?q.........m....q V..........
9...8.4....
20:27:06.535846 IP XXX.YYY.ZZZ.XXX.56781 > 151.101.1.69.443: Flags [.], ack 1, win 115, options [nop,nop,TS val 941503635 ecr 967826870], length 0
E..43.@.@.u../?q.e.E.....m.........s.q.....
8.4.9...
20:27:06.536252 IP XXX.YYY.ZZZ.XXX.56781 > 151.101.1.69.443: Flags [P.], seq 1:518, ack 1, win 115, options [nop,nop,TS val 941503635 ecr 967826870], length 517
E..93.@.@.s../?q.e.E.....m.........s.v.....
8.4.9................2.X.OQ.W..[. ...x...48.g....Z.....0.,.(.$...
.........k.j.i.h.9.8.7.6.........2...*.&.......=.5.../.+.'.#... .........g.@.?.>.3.2.1.0.E.D.C.B.1.-.).%.......<./.A.................E.........**www.stackoverflow.com**.........

祝你好运

 类似资料:
  • 我的一个EC2实例上有一个graphql服务器正在运行。我也有AWS appsync运行,但目前它只与几个Lambda集成。 我想将我的Appsync连接到graphql服务器,这样Appsync将作为特定查询/变化的代理。 因此,从客户端来看,它将如下所示: 客户端将一个查询发送到APPESNC,让我们假设它看起来像这样: Appsync已经定义了一个查询,它被配置为在graphql服务器上代理

  • 我有一个apache服务器在运行,在这个服务器上我也有一个mongo数据库在运行,监听标准端口27017。 我试过这个,但似乎一点也不起作用:

  • 我已经嵌入了在7000端口上运行的Jetty。另外,我有一个keycloak服务器运行在同一台机器的端口8100上。 我的所有客户端访问都通过Jetty进行,即localhost:7000。因此,我将keycloak作为Jetty上的反向代理,即localhost:7000/keycloak/auth将重定向到localhost:8100/auth。它击中正确。 现在,有KeycloakInsta

  • 使用nginx作为前端的反向代理将请求传递给应用是可行的。然而,只有nginx 1.4版本以上才支持WebSocket协议。下面是nginx代理HTTP和WebSocket请求的一个最基本的配置: server { listen 80; server_name _; location / { include proxy_params; pro

  • XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理

  • 本文向大家介绍抛弃Nginx使用nodejs做反向代理服务器,包括了抛弃Nginx使用nodejs做反向代理服务器的使用技巧和注意事项,需要的朋友参考一下 时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外,购买了一个小型的 Win 03 VPS 使用着。在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如果是一个 PHP、一个 ASP、 一个 JSP