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; 
}