Назад | Перейти на главную страницу

Проблемы с включением протокола прокси на 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-balance:

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

Но когда я делаю запросы к любому из этих портов, я не вижу заголовок протокола прокси при использовании tcpdump. Я могу успешно выполнять запросы через внутренние серверы как с HTTP, так и с HTTPS, но я просто не получаю ожидаемый заголовок PROXY.

Я не использую никаких других прокси между моими клиентами (openssl s_client, Firefox) и внутренним веб-сервером (где tcpdump наблюдает за соединением). Слушателями являются TCP: 80 -> TCP: 8080 и TCP: 443 -> TCP: 8443.

Нужно ли мне делать что-нибудь еще, чтобы включить протокол прокси на моем ELB?

Слушателями являются TCP: 80 -> TCP: 8080 и TCP: 443 -> TCP: 8443.

Вы применили политику к «портам экземпляра» 80 и 443. Порты экземпляра относятся к порту на внутренних экземплярах, поэтому на самом деле они должны быть установлены в политике на 8080 и 8443.