From: Michael Shigorin <mike@osdn.org.ua>
To: sysadmins@lists.altlinux.org
Cc: Denis Ovsienko <info@pilot.org.ua>
Subject: [Sysadmins] nginx+nginx+... :)
Date: Sun, 6 Jan 2008 01:41:16 +0200
Message-ID: <20080105234116.GT17636@osdn.org.ua> (raw)
Здравствуйте.
Родилось тут желание (и возможность) чуть разогнать сервер
в подписи. Работает он на связке nginx+apache, поэтому после
причёсывания всего нужного в новом контейнере и нескольких дней
неспешных игрищ с ab(8) было решено переезжать. Опять же, это
быстрее и обратимее делать разворотом реверс-прокси, чем DNS.
Но в итоге получилась такая вот связка:
old-ip:80 [dnat]
`-> ve0:8080 [nginx]
`-> new-ip:8080 [dnat]
`-> ve1:8080 [nginx]
`-> ve2:8080 [nginx]
`-> ve2:80 [apache]
Здесь два момента, один про порты и другой про IP.
Про порты -- старый: если apache где-то в недрах посадить не на
:80, то при каноникализации куда-то наружу может вылезти левый
порт. Который внутрь вовсе не факт, что просунут вообще хоть
как-то. Поэтому проще обеспечить apache на :80, а всё остальное
так или иначе выстроить между ним и тем внешним :80, на который
к нам собственно ходят.
Этим ночером выучил ещё один вариант нового, про IP.
При работе reverse proxy или такого frontend webserver, каким тут
является nginx, backend webserver запросы получает от него, а не
от клиента. В логах же хочется видеть всё-таки клиента. Поэтому
прокси обучается добавлять исходный IP в левый заголовок вроде
X-Real-IP: или X-Forwarded-For:, а бэкенд -- доставать оттуда
нужный адрес и прикидываться, что так и было.
Для apache-1.3 есть такой mod_realip, у нас с ним апач года три
как собирается. Для apache-2.x есть такой apache2-mod_rpaf,
который в 4.0 собран, но с багом #13886, поэтому из коробки не
работает (справедливости ради, совсем из коробки и не выйдет,
надо прописывать доверенные IP, с которых будут приниматься
к рассмотрению такие заголовки). Конфигурируются они по
документации, только вместо 127.0.0.1 может быть другой адрес,
если прокси ходит не по loopback interface:
--- /etc/httpd/conf/httpd.conf
AddModule mod_realip.c
# ...
<IfModule mod_realip.c>
RealIP 127.0.0.1 xfwd
RealIP 10.0.1.234 xfwd
RealIP my.re.al.ip xfwd
</IfModule>
# ...
---
Тут выяснилось, что nginx как бэкенд тоже умеет такое.
Зовётся оно ngx_http_realip_module, описано здесь:
http://sysoev.ru/nginx/docs/http/ngx_http_realip_module.html
У меня _не_ завелось на 0.5.20 из ALS4.0+updates, но поехало
с тем же конфигом на 0.5.31-alt4 из 4.0/branch (осталось
дофиксить там неприятность с недостающим вдвое bucket_hash_size
по умолчанию и надо бы в updates).
Вот, архивирую :)
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
next reply other threads:[~2008-01-05 23:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-05 23:41 Michael Shigorin [this message]
2008-01-06 0:30 ` Denis Smirnov
2008-01-17 6:43 ` Vladimir V. Kamarzin
2008-01-18 9:46 ` Michael Shigorin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080105234116.GT17636@osdn.org.ua \
--to=mike@osdn.org.ua \
--cc=info@pilot.org.ua \
--cc=shigorin@gmail.com \
--cc=sysadmins@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git