Re: proxy_set_header для req->remote_host
Sergey Shepelev
temotor at gmail.com
Thu Jul 9 18:32:56 MSD 2009
Вам не надо использовать mod_realip на nginx. Вам надо написать аналог
mod_realip для вашего демона на libevent.
Что делает любой mod_realip. Он читает заголовок X-Real-IP и заменяет
адрес клиента на значение этого заголовка. В дальнейшем, все кто
обрабатывает запрос, думают, что он пришёл не от прокси, а от
реального клиента.
Вам на nginx надо сделать
proxy_set_header X-Real-IP $remote_addr;
и всё. Уберите set_real_ip_from и real_ip_header. Это надо
имплементить на вашем бекенде.
При этом nginx будет добавлять заголовок X-Real-IP с адресом клиента.
А ваш демон на libevent должен читать этот заголовок (и, если хотите,
подставлять его значение в req->remote_host).
Еще раз. mod_realip в nginx вам не поможет. Единственное, что надо
настроить в nginx это proxy_set_header, чтоб он добавлял заголовок.
Всё.
Еще раз. Вы должны написать код в бекенде, который будет читать
заголовок X-Real-IP, если хотите читать реальный адрес клиента из
req->remote_host. Как это ни странно, вы должны записать в
req->remote_host, если хотите читать оттуда.
2009/7/9 Rauan Maemirov <rauan at maemirov.com>:
> Что тут не так?
>
> location /v {
>
> set_real_ip_from 0.0.0.0/0;
> real_ip_header X-Real-IP;
>
> proxy_pass http://127.0.0.1:8789;
> }
>
>
>
> 2009/7/9 Rauan Maemirov <rauan at maemirov.com>:
>> Спасибо, начал смотреть realip.
>> А что означает написать свое? Я ведь проксирую туда через nginx?
>>
>> 2009/7/9 Maxim Dounin <mdounin at mdounin.ru>:
>>> Hello!
>>>
>>> On Thu, Jul 09, 2009 at 05:25:19PM +0600, Rauan Maemirov wrote:
>>>
>>>> Здравствуйте. Что именно нужно писать, если я проксирую запрос на
>>>> демон (libevent), чтобы он передавал туда ip-address запроса
>>>> (remote_addr).
>>>>
>>>> Пробую вот так:
>>>> proxy_set_header Host $remote_addr;
>>>
>>> Вообще-то заголовок Host предназначен для другого, но не в этом
>>> суть.
>>>
>>>> но в req->remote_host все равно приходит 127.0.0.1 (демон на том же
>>>> хосте, что и nginx).
>>>
>>> Для того чтобы remote_host изменился на то что пришло в заголовке
>>> - его должен кто-то изменить. Для nginx'а это делается с помощью
>>> модуля realip, для Apache - mod_realip/mod_rpaf/mod_rpaf2. Если у
>>> вас свой демон на libevent'е - надо соответственно написать своё.
>>>
>>> Maxim Dounin
>>>
>>>
>>
>
More information about the nginx-ru
mailing list