请,有人可以看看这个配置吗?
global
log stdout format raw local0 debug
stats timeout 30s
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 50000
timeout client 50000
timeout server 50000
frontend app
bind *:15080
default_backend myback
backend myback
server site google.com:80 check
为什么这不起作用?如果我尝试访问127.0.0.1:15080,则需要花费一些时间,然后浏览器中的网址会更改为www.google.com:16080,这显然不会带您到任何地方。浏览器说:“无法访问此站点-ERR_CONNECTION_TIMED_OUT”。
那么为什么它不像人们期望的那样代理80端口呢?
日志条目说明不多:
127.0.0.1:50871 [01/Jul/2019:14:39:45.879] app myback/site 0/0/20/84/104 301 681 - - ---- 2/2/0/0/0 0/0 "GET / HTTP/1.1"
代理版本:
HA-Proxy version 2.0.0-4fb65f-8 2019/06/19 - https://haproxy.org/
编辑:
我以某种方式通过反复试验解决了这个问题。
答案 0 :(得分:1)
实际上,HAProxy正在按预期运行,并将您的请求代理到Google。但是,Google看到主机标头为“ Host:127.0.0.1:15080”,并以301重定向响应到www.google.com:15080
。您可以这样做,而无需设置HAProxy即可看到此信息:
$ curl -I -H 'Host: 127.0.0.1:15080' google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com:15080/
Content-Type: text/html; charset=UTF-8
Date: Mon, 01 Jul 2019 14:26:09 GMT
Expires: Wed, 31 Jul 2019 14:26:09 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 225
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
如果您想为Google设置一个非常基本的代理,则需要确保主机标头匹配并且要通过https发送请求。
backend myback
http-request set-header Host www.google.com
server site google.com:443 ssl verify none check