Protocolo de Listener para ELB na frente do Squid Proxy

2

Temos dois servidores proxy do Squid para alta disponibilidade. Queremos usar o Amazon ELB na frente desses servidores proxy do Squid.
Quando usamos o Protocolo do Balanceador de Carga como TCP e porta 8080, TCP do Protocolo de Instância e porta 3128 - Depois de exportar o proxy do squid usando o nome do ELB nas instâncias de teste, podemos nos conectar à Internet.

Mas

Quando usamos o protocolo Load Balancer como HTTP e porta 80, Instance Protocol HTTP e porta 3128 - Depois de exportar o proxy squid usando o nome ELB nas instâncias de teste, não podemos nos conectar à Internet.

A configuração do proxy do Squid é o arquivo de configuração original que obtemos com o pacote. Nós adicionamos apenas o nome do host virtual.

É possível usar HTTP em vez de TCP?

    
por Neetika 17.05.2016 / 13:28

2 respostas

3

Eu suspeito que eles desejem obter o IP%% do IP_ID original do solicitante para os logs. Sei quem eu sou.

Os ELBs não encaminham esses cabeçalhos ao usar o TCP no ELB, mas se você definir como HTTP / 3128, isso ocorre. Mas agora o squid não funciona.

$ curl -v -x http://MYELB.us-east-1.elb.amazonaws.com:3128 -L http://httpbin.org/ip
* Hostname was NOT found in DNS cache
*   Trying 10.0.153.134...
* Connected to MYELB.us-east-1.elb.amazonaws.com (10.0.153.134) port 3128 (#0)
> GET http://httpbin.org/ip HTTP/1.1
> User-Agent: curl/7.35.0
> Host: httpbin.org
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 400 Bad Request
< Content-Language: en
< Content-Type: text/html;charset=utf-8
< Date: Mon, 06 Jun 2016 17:25:17 GMT
< Mime-Version: 1.0
* Server squid/3.5.12 is not blacklisted
< Server: squid/3.5.12
< Vary: Accept-Language
< Via: 1.1 ip-10-0-139-174 (squid/3.5.12)
< X-Cache: MISS from ip-10-0-139-174
< X-Cache-Lookup: NONE from ip-10-0-139-174:3128
< X-Squid-Error: ERR_INVALID_URL 0
< Content-Length: 3540
< Connection: keep-alive

Se você olhar para o TCPDUMP da caixa do squid, você verá isto:

GET /ip HTTP/1.1
host: httpbin.org:3128
Accept: */*
Proxy-Connection: Keep-Alive
User-Agent: curl/7.35.0
X-Forwarded-For: 172.17.0.5
X-Forwarded-Port: 3128
X-Forwarded-Proto: http
Connection: keep-alive

Qual squid aparece porque não é um URL real (o servidor foi removido do GET):

HTTP/1.1 400 Bad Request
Server: squid/3.5.12
Mime-Version: 1.0
Date: Mon, 06 Jun 2016 17:28:07 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3540
X-Squid-Error: ERR_INVALID_URL 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from ip-10-0-139-174
X-Cache-Lookup: NONE from ip-10-0-139-174:3128
Via: 1.1 ip-10-0-139-174 (squid/3.5.12)
Connection: close

Alguma idéia de como obter o ELB para passar o nome do servidor? Também não está claro por que o cabeçalho do host tem a porta 3128.

    
por 06.06.2016 / 19:31
3

Suponho que você queira alterar seu ELB para usar HTTP, pois você deseja registrar o endereço IP do cliente.

Você tem 2 opções para conseguir isso -
1. Use seu ELB com TCP (e NÃO HTTP) e configure-o para encaminhar o IP do cliente usando o protocolo de proxy. leia mais sobre isso aqui
2. atualize o squid para a versão 3.5 (ou superior) e use o protocolo de proxy incorporado. aqui está um link para a seção relevante nas notas de lançamento

    
por 27.12.2016 / 18:00