使用NTLM的windows身份验证的nginx反向代理

Posted 匿名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NTLM的windows身份验证的nginx反向代理相关的知识,希望对你有一定的参考价值。

一次项目中使用开源nginx反向代理NTLM的windows身份验证出现反复登陆框,最终分析属于keepalive 在NTLM认证过程中发生变化导致。

 

据此,将nginx.conf 配置修改如下

 

worker_processes  auto;
worker_rlimit_nofile 65535;

events {
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;	

    access_log  logs/access.log  main;

    sendfile           on;
    keepalive_timeout  65;

# upstram 负载定义中需添加keepalive upstream adrms_service { ip_hash; server 192.168.1.1:443; server 192.168.1.2:443; keepalive 32; }
# 强制80端口转443
    server {
                listen 80;
                server_name adrms.example.com;
                rewrite ^(.*) https://$server_name$request_uri? permanent;
    }

    server {
                listen 443 ssl;
                server_name adrms.example.com;
                ssl_certificate   cert/adrms.example.com.pem;
                ssl_certificate_key cert/adrms.example.com.key;

                ssl_session_cache shared:SSL:10m;
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:HIGH:!aNULL:!eNULL:!NULL:!MD5:!RC4:!DHE:!AESGCM:!DH:!EDH;
                ssl_prefer_server_ciphers on;

       		charset UTF-8;

#location 需添加proxy_http_version 1.1 和 proxy_set_header Commection ""; location / { proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; 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_http_version 1.1;             proxy_set_header Connection ""; if ( $request_uri = "/" ) { rewrite ^ $scheme://$host/_wmcs/licensing/license.asmx break; } proxy_pass https://adrms_service; } } }

 

如采用nginx plus版本,可以直接在在upstream区域添加专用的语句 ntlm;

    upstream adrms_service {
       ip_hash;
       server 192.168.1.1:443;
       server 192.168.1.2:443;
       ntlm;
    }

  

如上,即可实现nginx代理ntlm验证,无需lua编码或使用商业版nginx plus。

 

以上是关于使用NTLM的windows身份验证的nginx反向代理的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上配置 Git 以使用 NTLM 代理身份验证

使用集成 Windows 身份验证或 NTLM 登录 Jira

Windows 集成 (NTLM) 身份验证与 Windows 集成 (Kerberos)

Safari 访问受 Windows 集成身份验证 (aka NTLM) 保护的网站时出现问题

curl:如何在 Windows 上使用 Kerberos 而不是 NTLM 身份验证?

NTLM 身份验证 - 在 PHP 中获取 Windows 登录名、域和主机