从侦听 TCP 的 AWS 经典 ELB 的访问日志中获取 URL?



我在 AWS 中运行一个带有客户端和服务器组件的应用程序。客户端通过经典 ELB 与服务器通信。

具体来说,我正在运行部署到托管 kubernetes 集群 (EKS( 的 JupyterHub。

我的要求:获取显示请求 URL 的 HTTP 日志。

目前,我无法执行此操作,因为:

ELB 侦听通过 TCP

的安全流量(在 443 上(,而侦听 TCP 的负载均衡器的 ELB 访问日志不包含 URL。(只有通过 HTTP 侦听的负载均衡器才会显示 URL。

ELB 需要侦听 TCP,因为应用程序的某些部分使用 websocket 通信。由于安全 TCP(websocket(流量和 https 流量都通过端口 443,并且您只能在一个协议上侦听单个端口,因此我无法侦听 http 流量,因此无法获取显示 URL 的 HTTP elb 访问日志。

为了解决这个问题,让我们假设应用程序是一个黑匣子,不可配置。使用上述当前设置,我有什么方法可以获取将显示 URL 的 HTTP 请求日志?

我将这个问题作为 AWS 配置问题(以保持问题的范围简单而狭窄(——但是我也对一个解决方案持开放态度,让我配置哪些端口 jupyterhub 笔记本服务器用于与 /api/kernel 端点进行 websocket 通信。如果我可以将端口配置为 443 以外的端口,那么我的 ELB 上可以有两个侦听器。

切换到应用程序负载均衡器。 它们支持在单个侦听器上使用带有 websocket 的 HTTPS。

TCP 模式下的 ELB 经典完全不知道通过它的有效负载,因此它没有 URL 的概念。

最新更新