配置NGINX以获取已识别用户的remote_user

时间:2018-05-18 14:48:36

标签: nginx

我正在构建一个由NGINX和Gunicorn提供服务的烧瓶应用程序,它需要访问用户窗口帐户名称(以查询数据库)。在连接到门户(通过IIS)时,使用Windows凭据识别用户。由于应用程序可以从公司门户网站访问,我正在从应用程序中获取用户名,而无需检查用户的凭据或通过提示询问用户名。我已阅读有关NGINX remote_user的信息,但当请求命中NGINX时,此变量始终为空。 我是否有办法配置NGINX以使用已识别用户的名称填充此变量?似乎使用basic_auth会强制我使用用户密码保存文件,这是不可能的。 这是我的NGINX实际配置文件:

server {

#Docker DNS
resolver 127.0.0.11;

location / {
# Prevent resolution on start
    set $docker_host "app";
    proxy_pass http://$docker_host:8999;
    proxy_pass_request_headers on;
    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 Remote_User $remote_user;
}

   listen 80;

  server_name app.companyDomain.net;
}

NGINX配置文件:     用户nginx;     worker_processes auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
   worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    include /etc/nginx/conf.d/web.conf; 

    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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    underscores_in_headers on;
    #gzip  on;

}

这是我尝试连接到应用程序时获得的日志。 $ remote_user是empy:

10.0.21.1 - - [18/May/2018:14:18:25 +0000] "POST /index HTTP/1.1" 302 269 "http://app.companyDomain/auth/index" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; Touch; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Tablet PC 2.0)" "-"

0 个答案:

没有答案