我正在构建一个由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)" "-"