我正在尝试向用户显示 443 端口号。我有两个如下所示的 URL,
https://mainadmin.dev.example:8443/mainadmin
https://studentblog.dev.example:8443/Studentblogpage
但现在我想更改其中一个 URL,例如
https://studentblog.dev.example/Studentblogpage
或https://studentblog.dev.example:443/Studentblogpage
是否可以像下面的代码那样进行更改?
frontend port_8443
bind *:8443 ssl crt /etc/haproxy/ssl/certificate/crt.txt
reqadd X-Forwarded-Proto:\ https
acl mainadm path_reg -i ^/MainAdm.*$
acl StudentBlog path_reg -i ^/StudentSite.*$
use_backend MainAdm-Devl if { sslsni admmain.dev.example } Mainadm
use_backend Studentblog-Devl if { sslsni studentblog.dev.example } StudentBlog
mode http
option tcplog
backend MainAdm-Devl
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server webserver01 server-01.dev.example:8443 ssl check verify none cookie a1
server webserver02 server-02.dev.example:8443 ssl check verify none cookie a2
backend Studentblog-Devl
mode http
balance roundrobin
option httpchk GET /Studentblogpage
cookie SERVERID insert indirect nocache
server webserver04 server-04.dev.example:443 ssl check verify none
server webserver05 server-05.dev.example:443 ssl check verify none backup
答案1
实际上,有很多方法可以将流量从端口 8443 转发到 443。
首先,您可以使用 NAT 和 PAT (NAPT) 将目标端口为 8443 的流量转换为 443 上的系统(或根据需要反之亦然)。如果您无法管理控制网络上的路由器来配置此功能,那么您必须联系网络管理员,并且前提是您的网络实施了 NAT/PAT(大多数私有网络都这样做以节省 IPv4 地址空间)。
不过,根据您的问题,如果您只想基于配置来执行此操作,您可以配置另一台前端服务器并将其配置为公开监听端口 443,然后通过重定向在内部转发该流量。
或者,如果这与您的环境不冲突,您可以首先将您的 Web 服务器更改为监听 443(尽管根据您的问题,很可能确实如此)。
答案2
是的,您可以使用 HAProxy 代理端口 443 或端口 8443,并将其路由到后端监听不同端口的服务器。这就是使用代理的好处。您的前端可以有多条“绑定”行,每条行指定要监听的不同端口。
当您使用 HAProxy 终止 SSL 时,正如您所做,您可以访问 HTTP 消息中的所有信息。因此,您可以直接检查 ACL 语句中的 Host 标头(您不需要检查 SNI - 虽然您可以使用“ssl_fc_sni”获取方法。“sslsni”不正确)。
acl StudentBlog path_beg -i Studentblogpage
use_backend Studentblog-Devl if { req.hdr(Host) studentblog.dev.example } StudentBlog
在此示例中,如果两个条件都成立,则使用“Studentblog-Devl”后端:
- 主机头是 'studentblog.dev.example'
- URL 路径以“Studentblogpage”开头
如果您只想将 Studentblog 更改为监听端口 443 而不是主管理站点,那么最好创建两个“前端”并将它们分开,以便它们只能监听它们应该监听的端口。