我的 Nginx(Windows 7 上为 1.2.6)conf 文件中有以下设置:
location ~ ^/FOO/(.*)$ {
proxy_pass http://server_two:8888/FOO/$1;
}
在server_two
我的 IIS7 上运行使用基本身份验证的 WCF 服务。当我访问时,http://server_two:8888/FOO/Service.svc?wsdl
我得到了正确的端点。
当我访问时,http://myhost/FOO/Service.svc?wsdl
我会弹出一个用户/通行证框。我可以输入我的凭据,直到奶牛回家,但仍然一无所获。我还尝试了以下内容:
location ~ ^/FOO/(.*)$ {
proxy_pass http://server_two:8888/FOO/$1;
proxy_set_header Host $host;
proxy_set_header X-Accel-Expires 0;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
和其他几个变体,但到目前为止我还无法使登录过程正常工作。Nginx 可以吗?我错过了什么?
更新:
我忘了说,IIS 设置为对 Windows 身份验证进行 HTTP 401 质询
默认情况下,NGINX 不会在上游连接上使用 keepalive,这可能会导致身份验证问题,因为不会维护 TCP 连接。我会尝试打开keepalive。请参阅 http://nginx.org/en/docs/http/ngx_http_upstream_module.html
根据 nginx 文档:
“ntlm”选项仅适用于 Nginx Plus。我创建了一个能够提供类似功能的自定义模块
gabihodoroaga/nginx-ntlm-模块
在hodo.dev上也有一篇关于此的博客文章。