Haproxy - Невозможно настроить самый простой прокси - PullRequest
0 голосов
/ 01 июля 2019

Пожалуйста, кто-нибудь может посмотреть этот конфиг?

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, это займет некоторое время, а затем URL-адрес в браузере изменится на 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"

Версия Haproxy:

HA-Proxy version 2.0.0-4fb65f-8 2019/06/19 - https://haproxy.org/

EDIT:

Я как-то решил проблему методом проб и ошибок.

1 Ответ

1 голос
/ 01 июля 2019

На самом деле, 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
...