Nginx作为Exchange代理

时间:2016-02-13 19:16:31

标签: ssl nginx proxy exchange-server activesync

我一直在寻找解决方案已经有好几个小时了。我对Nginx也很陌生,所以如果有人可以帮我一个演示配置,那就太棒了。

  • 1个公共IP地址(这是造成这么多麻烦的原因)
  • Nginx作为代理
  • Exchange 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 配置?

我当前的配置(感谢下面的链接,但特别是tigunov关于让Outlook Anywhere又称RPC工作的评论)让我比以前更进一步。当我尝试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 - OPTIONS),但是:

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. 

在连接工具中没有进一步的细节。

1 个答案:

答案 0 :(得分:1)

此配置基于Tad DeVries'配置找到here和Daniel Kempkens'修复了here找到的自动发现和RPC问题。

请注意,由于我没有要测试的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;
}