在 AWS ELB 上启用代理协议时遇到问题

在 AWS ELB 上启用代理协议时遇到问题

我按照指南进行操作http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html在我的两个 TCP 侦听器(端口 80 和 443)上启用代理协议。我在我的一个 EC2 实例上运行了以下命令:

aws elb create-load-balancer-policy \
    --load-balancer-name 'proxy-connect-test' \
    --policy-name EnableProxyProtocol \
    --policy-type-name ProxyProtocolPolicyType \
    --policy-attributes AttributeName=ProxyProtocol,AttributeValue=true

echo "Enabling policy on :80"
aws elb set-load-balancer-policies-for-backend-server \
    --load-balancer 'proxy-connect-test' \
    --instance-port 80 --policy-names 'EnableProxyProtocol'

echo "Enabling policy on :443"
aws elb set-load-balancer-policies-for-backend-server \
    --load-balancer 'proxy-connect-test' --instance-port 443 \
    --policy-names 'EnableProxyProtocol'

我可以使用 describe-load-balancers 来确认这些策略已被记录:

"BackendServerDescriptions": [
                {
                    "InstancePort": 80, 
                    "PolicyNames": [
                        "EnableProxyProtocol"
                    ]
                }, 
                {
                    "InstancePort": 443, 
                    "PolicyNames": [
                        "EnableProxyProtocol"
                    ]
                }
            ],

但是,当我向这两个端口发出请求时,使用 tcpdump 时看不到代理协议标头。我可以通过 HTTP 和 HTTPS 通过后端服务器成功发出请求,但似乎没有获得预期的 PROXY 标头。

我在客户端 (openssl s_client、Firefox) 和后端 Web 服务器 (tcpdump 正在观察连接的位置) 之间不使用任何其他类型的代理。侦听器为 TCP:80 -> TCP:8080 和 TCP:443 -> TCP:8443。

我还需要做其他事情才能在我的 ELB 上启用代理协议吗?

答案1

监听器是 TCP:80 -> TCP:8080 和 TCP:443 -> TCP:8443。

您已将策略应用于“实例端口”80 和 443。实例端口是指后端实例上的端口,因此在策略中实际上应该将其设置为 8080 和 8443。

相关内容