在Squid Proxy之前的ELB监听协议

我们有两个Squid代理服务器来实现高可用性。 我们希望在这些Squid代理服务器之前使用Amazon ELB。
当我们使用负载均衡协议作为TCP和端口8080,实例协议TCP和端口3128 – 在testing实例上使用ELB名称导出鱿鱼代理后,我们能够连接到互联网。

当我们使用负载平衡协议作为HTTP和端口80,实例协议HTTP和端口3128 – 在testing实例上使用ELB名称导出squid代理后,我们无法连接到互联网。

Squid代理configuration是我们获得包的原始configuration文件。 我们只添加了虚拟主机名。

有可能使用HTTP而不是TCP?

我怀疑他们想要获取日志的请求者的原始IP地址的X-Forwarded-For 。 我知道我是。

在ELB中使用TCP时,ELB不会转发这些头文件,但是如果您设置为HTTP / 3128,那么ELB不会。 但是现在鱿鱼不起作用。

 $ 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 

如果你看一下鱿鱼盒的TCPDUMP,你会看到:

 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 

哪个鱿鱼barfs因为它不是一个真正的URL(服务器被剥离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 

有关如何让ELB传递服务器名称的任何想法? 也不清楚为什么主机头上有端口3128。

我想你想改变你的ELB使用HTTP,因为你想logging客户端的IP地址。

你有2个select来实现这一点 –
1.使用您的ELB与TCP(而不是HTTP),并将其configuration为使用代理协议转发客户端IP。 在这里阅读更多
2.将squid升级到3.5(或更高版本),并使用内置的代理协议。 这里是发行说明中相关部分的链接