Nginx作为Exchange代理
问题描述:
我一直在寻找一个解决方案,已经有好几个小时了。我对Nginx也很陌生,所以如果有人可以帮我做一个demo配置,那将会非常棒。Nginx作为Exchange代理
- 1公共IP地址(这是什么导致这么多麻烦)
- 的Nginx作为代理
- 交易所2013
现状:
- HTTP:apps.domain .org,video.domain.org,geo.domain.org。端口80上的流量进入Nginx服务器。
- https:mail.domain.org。端口443上的流量直接进入Exchange 2013.
现在,我们需要在我们的apps.domain.org上使用https/SSL。 我们的防火墙只检查IP地址并转发流量。
所以基本上,我的想法是所有的流量都去Nginx。 在那里,我需要知道什么是mail.domain.org并将其重定向到Exchange。具体来说,我需要一切工作。 OWA,自动发现:好的。但我正在努力似乎是RPC。
有人提到我应该在Nginx中使用流配置来管理它。
但我不知道如何区分,以便只有mail.domain.org使用流,而apps.domain.org是在http config?
我目前的配置(感谢下面的链接,但在有关获取Outlook无处不又名RPC工作特别tigunov的评论)让我更比以前。当我尝试使用Microsoft的远程连接分析器时,目前在尝试FolderSync时失败。在Outlook中,信息框仍然弹出。
server {
(server_name , SSL-certs etc)
# Set global proxy settings
proxy_pass_header Date;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding "";
keepalive_timeout 3h;
proxy_read_timeout 3h;
#reset_timedout_connection on;
tcp_nodelay on;
client_max_body_size 3G;
#proxy_pass_header Authorization;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off;
proxy_set_header Connection "Keep-Alive";
}
测试现在将会导致:(样样精,其中的ActiveSync - 选项),但是:
Attempting the FolderSync command on the Exchange ActiveSync session.
The test of the FolderSync command failed.
Exception details:
Message: The request was aborted: The request was canceled.
Type: System.Net.WebException
Stack trace:
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.Exchange.Tools.ExRca.Extensions.RcaHttpRequest.GetResponse()
Elapsed Time: 526 ms.
没有进一步的细节,在连接工具中可以看出。
答
此配置基于Tad DeVries的配置here和Daniel Kempkens的自动发现修复和RPC问题here。
请注意,由于我没有用于测试的Exchange环境,因此我不确定此配置是否可以正常工作,但值得一试。
server {
listen 80;
#listen [::]:80;
server_name mail.gwtest.us autodiscover.gwtest.us;
return 301 https://$host$request_uri;
}
server {
listen 443;
#listen [::]:443 ipv6only=on;
ssl on;
ssl_certificate /etc/ssl/nginx/mail.gwtest.us.crt;
ssl_certificate_key /etc/ssl/nginx/mail.gwtest.us.open.key;
ssl_session_timeout 5m;
server_name mail.gwtest.us;
location/{
return 301 https://mail.gwtest.us/owa;
}
proxy_http_version 1.1;
proxy_read_timeout 360;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_pass_header Authorization;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
more_set_input_headers 'Authorization: $http_authorization';
more_set_headers -s 401 'WWW-Authenticate: Basic realm="exch1.test.local"';
location ~* ^/owa { proxy_pass https://exch1.test.local; }
location ~* ^/Microsoft-Server-ActiveSync { proxy_pass https://exch1.test.local; }
location ~* ^/ecp { proxy_pass https://exch1.test.local; }
location ~* ^/rpc { proxy_pass https://exch1.test.local; }
#location ~* ^/mailarchiver { proxy_pass https://mailarchiver.local; }
error_log /var/log/nginx/owa-ssl-error.log;
access_log /var/log/nginx/owa-ssl-access.log;
}