使用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。

原文地址:https://www.cnblogs.com/micronm/p/12613242.html

时间: 2024-08-29 09:27:32

使用NTLM的windows身份验证的nginx反向代理的相关文章

windows系统下配置Nginx反向代理多tomcat共享session

nginx.tomcat下载安装本篇不提了,直接说步骤: 1 配置nginx配置文件: nginx下conf文件夹中的nginx.conf 添加下面代码, upstream web_apps{ server 127.0.0.1:8080 weight=1; server 127.0.0.1:8989 weight=1; } server { listen 80; server_name localhost 127.0.0.1; proxy_set_header Host $host; proxy

Nginx反向代理缓存服务器搭建

Nginx反向代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理.

Nginx反向代理、缓存、负载均衡服务器构建

代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理. 反向代理服务器接受来

nginx反向代理缓存服务器构建

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网

nginx 反向代理缓存服务器构建

代理服务可简单的分为正向代理和反向代理:   正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理. 反向代理服务器

使用SoapUI测试windows身份验证的webservice

有个朋友问到用soapui测试wcf服务时如果使用windows身份验证要怎么传输凭据,于是自己试了一下.其实服务端是wcf还是webservice还是webapi都无所谓,关键是windows身份验证的凭据在哪里设置.手头上恰好有一个使用windows身份验证的站点,在浏览器上访问成功时,大约是这样子的页面: 然后在soapui里建一个工程访问一下,返回结果是这样的: 然而在凭证设置面板上并没有看到NTLM类型.找了一下资料,这贴帖子上已经有人回复了: https://stackoverflo

安装完SQL Server 2012后,由Windows身份验证设置为混合型的身份验证

如何解决SQL2012windows身份验证模式改为混合验证模式... 由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接.解决方法: 1.选择"使用 Windows 身份验证"连接上 SQL Server: 2. 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称(就是下图蓝色部分),右击,选择"属性". 3.再选

vs如何在Windows身份验证下调试Web项目

vs做的Web项目发布到IIS站点后,通常我们还希望利用vs来调试代码.如果Web在IIS中设置成了Windows身份验证,那么我们如何在vs调试的时候,也同样采用Windows身份认证进行调试呢? 方法很简单—— 1.咋vs中,鼠标选中Web项目: 2.按F4,也就是查看其属性: 3.禁用匿名身份验证,开启Windows身份验证: Ok,现在再调试的时候,也会弹出输入框,让你进行Windows身份验证了~

笨鸟先飞随笔:ADO.NET中VS连接Sqlserver数据库的代码(Windows身份验证方式补充)

上一篇只写到了数据库Sqlserver连接方式下的连接代码在这里对Windows验证方式的连接做一下补充: 关于VS连接Sqlserver数据库windows验证方式的操作方式: 01.VS窗口中上方菜单依次选择数据 02.添加新数据源 03.然后选择数据库后点击下一步 如下图所示: 04.选择数据集然后点击下一步 如下图所示: 05.点击新建连接,弹出对话框 如下图所示: 06.数据源显示为Microsoft SQL server SqlClient 如果不是则需要点击更改修改为Microso