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