Удаленный IP с HAProxy

PCMover (http://www.laplink.com/pcmover/) работал на меня перемещающийся от одного ноутбука до другого. Все мигрировало хорошо, хотя наша группа IT - то, кто выполнил фактическую утилиту, таким образом, я не уверен в простоте использования.

19
задан 23 June 2009 в 17:00
8 ответов

Заключенный в кавычки из документа HAProxy в haproxy.1wt.eu.

- if the application needs to log the original client's IP, use the
  "forwardfor" option which will add an "X-Forwarded-For" header with the
  original client's IP address. You must also use "httpclose" to ensure
  that you will rewrite every requests and not only the first one of each
  session:
        option httpclose
        option forwardfor

Указано, что приложение должно рассматривать HTTP-заголовок X-Forwarded-For для знания клиентского адреса IP. Походит на единственный способ войти в Ваш случай.

Обновленный для HAProxy 1.4

Haproxy 1.4 начал новый режим с "опции http-server-close". Это все еще закрыло соединение с сервером, но поддерживает активный к клиенту если возможный и используемый. На большинстве установок Вы, вероятно, хотите использовать это, поскольку это помогает с задержкой на единственной части высокой задержки Вашего соединения (между Haproxy и клиентом).

   option http-server-close
   option forwardfor
31
ответ дан 2 December 2019 в 20:15

Обратите внимание, что казалось бы, что можно переопределить что see's приложения мое изменение заголовков Apache:

SetEnvIf X-Forwarded-For (.*) REMOTE_ADDR=$1
SetEnvIf X-Forwarded-For (.*) REMOTE_IP=$1

Однако это не работает на доступ Apache через, "Позволяют от" и т.д.

1
ответ дан 2 December 2019 в 20:15

HAProxy, дизайном, не может передать исходный IP-адрес реальному серверу, в значительной степени как никакой другой прокси.

Одно решение может быть, если Ваша единственная проблема с веб-сервером, для изучения X-forwarded-for HTTP-заголовка, который должен содержать адрес клиента. Теперь, это - в значительной степени конкретное приложение/язык, но смотрите на этот пример в php:

$headers = apache_request_headers();

$real_client_ip = $headers["X-Forwarded-For"];

Если Вы также хотите зарегистрировать исходный адрес, можно изменить LogFormat в httpd.conf, чтобы выглядеть примерно так:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{X-Forwarded-For}i\"" common

1
ответ дан 2 December 2019 в 20:15
  • 1
    неправильно, Вы можете с опцией " forwardfor" –  wittwerch 23 June 2009 в 18:18
  • 2
    Да, и эта опция продвигается по умолчанию, но что она делает устанавливает HTTP-заголовок X-Forwarded-For. То, что я говорил, и это смотрит на меня, именно это на самом деле спрашивал автор вопроса, было о фактическом исходном адресе пакета IP –  Thiagodrv 23 June 2009 в 18:40

Ну, кажется, что X-Forwarded-for не работает хорошо на Вашу установку. Так, есть ли какая-либо особая причина Вас придерживаться haproxy? Кажется, что IPVS является большим количеством aproppriate для Ваших потребностей (я на самом деле использую ldirector, который в свою очередь использует ipvs).

Смотрите на:

http://kb.linuxvirtualserver.org/wiki/IPVS

и

http://www.vergenet.net/linux/ldirectord/

Используя IPVS в 'IP Tunneling' или 'Direct Routing' режим сохраняет адрес клиента.

0
ответ дан 2 December 2019 в 20:15

Существует способ перекомпилировать HAproxy для включения Tproxy, который позволит передавать исходного адреса.

Существует сообщение в блоге здесь об этом: http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/

Несколько примечаний:

Последнее ядро Linux (2.6.28 11 серверов) включает поддержку TProxy, так перекомпиляция ядра не необходима.

Удостоверьтесь, что настроили серверы в своей веб-ферме с адресом шлюза по умолчанию, который указывает на сервер HAProxy.

6
ответ дан 2 December 2019 в 20:15

Попробуйте mod_extract_forwarded из http://www.openinfo.co.uk/apache/

LoadModule extract_forwarded_module modules/mod_extract_forwarded.so
MEFOrder refuse,accept
MEFRefuse all
MEFAccept xxx.xxx.xxx.xxx
0
ответ дан 2 December 2019 в 20:15

Используйте rpaf апачский модуль http://stderr.net/apache/rpaf/, я знаю, что это и старое сообщение, но мне потребовались дни для нахождения этого. Это представит любому приложению x-forwarded-for IP.

2
ответ дан 2 December 2019 в 20:15

Простой способ с haproxy в режиме tcp и nginx:

добавить send-proxy в качестве опции сервера:

haproxy.conf:

.

.

прослушать ssl 0.0.0.0:443[1262 sizesmode tcp

баланс минимальное соединение

параметр httpchk GET / ping

параметр журнал-проверки работоспособности

сервер w1 192.168.1.1:443 send-proxy check check-ssl verify none

сервер w2 192.168.1.1 : 443 send-proxy check check-ssl verify none

.

.

Nginx должен поддерживать протокол прокси

nginx.conf:

.

.

listen 192.168.1.1 : 443 ssl proxy_protocol;

.

.

set_real_ip_from 192.168.1.0/24;

real_ip_header proxy_protocol;

.

.

-1
ответ дан 2 December 2019 в 20:15

Теги

Похожие вопросы