Haproxy-无法设置最基本的代理

时间:2019-07-01 12:55:52

标签: port haproxy

请,有人可以看看这个配置吗?

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/

编辑:

我以某种方式通过反复试验解决了这个问题。

1 个答案:

答案 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