1. 微软的crm是基于NTLM认证的
2. nginx默认情况下是无法转法ntlm认证的
要解决此问题,有2个思路:
1. 对CRM启用基于IFD的(基于互联网的身份认证服务)
2. 配置NGINX支持NTLM协议
本例采用第二种方式:
第一步,对于upstream的配置:关键在于添加了keepalive参数。
upstream crm { ip_hash; server 10.1.5.09:80 max_fails=2 fail_timeout=2; server 10.1.5.10:80 max_fails=2 fail_timeout=2; keepalive 60; }
第二步,在Server区的location上下文中,注意下面加粗字体配置。
location / { proxy_pass http://crm; proxy_set_header Host $host; include custom.conf.d/proxy.conf; proxy_http_version 1.1; proxy_set_header Connection ""; }
配置完成后,重启nginx即可。
注意: 有人说,这样的情况下,可能出现用户的会话混乱的情况,就是一个用户跑到了另一个用户的会话下。
所以建议采用IFD,启用ADFS的方式来解决这个问题。