我在我的网络服务器前面使用 haproxy 来 ssl 终止。
如果请求是 http s ,那么我在端口 81 上转发请求,如果请求正常则我 80 em> http -
backend b1_http
mode http
server bkend_server
backend b1_https
mode http
server bkend_server:81
问题是,当 haproxy 向后端发送请求时,它会将 HTTP_HOST 标头发送为request.domain.com:81
。
是否可以在 haproxy 中将 https 请求发送到特定端口的后端,而无需在 HTTP_HOST 请求标头中附加端口?
答案 0 :(得分:1)
这里有两个问题。
首先,没有HTTP_HOST
标头。标头为Host:
。听起来HTTP_HOST
是由您的Web服务器或框架在内部生成的。
其次,HAProxy不会修改Host:
标题只是因为你的后端正在监听80以外的端口。它实际上并没有修改Host:
标题。 all,除非明确配置为,使用reqirep ^Host: ...
或http-request set-header host ...
等机制。
您可以通过数据包捕获进行确认。您应该发现无论HTTP_HOST
是什么,该值必然是在后端系统本身内部生成的,因为它不是来自HAProxy。