nginx+exchange

Igor Muratov migor at altlinux.org
Sat Jul 11 02:23:17 MSD 2009


Igor Sysoev пишет:
> On Thu, Jul 09, 2009 at 12:20:24PM -0500, Igor Muratov wrote:
>
>   
>> Оказывается на клиенте была включена взаимноя авторизация SSL. Отключил 
>> это и вроде что-то пошло. По крайней мере в логах теперь вот это:
>>
>> 2009/07/09 12:08:51 [info] 20467#0: *7 client sent invalid method while 
>> SSL handshaking, client: X.X.X.X, server: nginx.example.org, request: 
>> "RPC_IN_DATA /rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1"
>> 2009/07/09 12:08:51 [info] 20467#0: *8 client sent invalid method while 
>> SSL handshaking, client: X.X.X.X, server: nginx.example.org, request: 
>> "RPC_OUT_DATA /rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1"
>>
>> Скорее всего ексчейндж не переваривает вот это внешнее имя и его нужно 
>> будет просто поправить средствами rewrite на правильное.
>>
>> Сегодня попробую и отпишу результат.
>>     
>
> Нет, проблема в подчёркиваниях в RPC_OUT_DATA.
> Прилагаемый патч разрешает подчёркивания в методе.
>
>
>   
Я немного дополнил это патч (см в аттаче). По крайней мере удалось 
добиться того, чтобы клиент добрался до ексчейнджа и у него запросили 
авторизацию. Однако дальше этого дело не идет.

Вот логи:

X.X.X.X - - [10/Jul/2009:17:07:22 -0500] "RPC_IN_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1" 401 1656 "-" "MSRPC"
X.X.X.X - - [10/Jul/2009:17:07:22 -0500] "RPC_OUT_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1" 499 0 "-" "MSRPC"
X.X.X.X - - [10/Jul/2009:17:07:27 -0500] "RPC_IN_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1" 401 1539 "-" "MSRPC"
X.X.X.X - - [10/Jul/2009:17:07:27 -0500] "RPC_OUT_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1" 401 1539 "-" "MSRPC"
X.X.X.X - - [10/Jul/2009:17:07:27 -0500] "RPC_IN_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1" 401 1539 "-" "MSRPC"
X.X.X.X - - [10/Jul/2009:17:07:27 -0500] "RPC_OUT_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1" 499 0 "-" "MSRPC"

А это error:

2009/07/10 17:07:22 [info] 28559#0: *1 client X.X.X.X closed keepalive 
connection (104: Connection reset by peer)
2009/07/10 17:07:22 [info] 28559#0: *3 client closed prematurely 
connection, so upstream connection is closed too (104: Connection reset 
by peer) while SSL handshaking to upstream, client: X.X.X.X, server: 
nginx.example.org, request: "RPC_OUT_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1", upstream: 
"https://192.168.1.201:443/rpc/rpcproxy.dll?nginx.example.org:6002", 
host: "nginx.example.org"
2009/07/10 17:07:27 [info] 28559#0: *5 client X.X.X.X closed keepalive 
connection (104: Connection reset by peer)
2009/07/10 17:07:27 [info] 28559#0: *7 client closed prematurely 
connection, so upstream connection is closed too (104: Connection reset 
by peer) while reading response header from upstream, client: X.X.X.X, 
server: nginx.example.org, request: "RPC_OUT_DATA 
/rpc/rpcproxy.dll?nginx.example.org:6002 HTTP/1.1", upstream: 
"https://192.168.1.201:443/rpc/rpcproxy.dll?nginx.example.org:6002", 
host: "nginx.example.org"

Меня смущает вот что. В логи пишется внешнее имя почтового сервера. 
Однако внутри локальной сети ексчейндж известен под другим именем. Ну и 
сам он себя осознает под другим именем. Вот это имя и должно 
использоваться в URL по которому идет обращение. Я не могу понять, то 
что я вижу в логах, это запрос клиента к nginx или запрос от nginx к 
апстриму?

По всей видимости потребуется вот такая конструкция c rewrite чтобы 
поправить URL?
        location = / {
            rewrite ^ https://nginx.example.org/exchange permanent;
        }
        location /rpc {
            proxy_pass https://192.168.1.201/rpc;
            rewrite ^(.*)nginx.example.org(.*)$ $1internal.name$2;
        }

-------------- next part --------------
A non-text attachment was scrubbed...
Name: owa2.patch
Type: text/x-diff
Size: 575 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090710/98f0c1e6/attachment.patch>


More information about the nginx-ru mailing list