将用户名从 Nginx 传递或写入应用程序

pass or write the username from Nginx into an app

嗨,我是 Nginx 的绝对初学者!我在闪亮的服务器前使用 Nginx 作为反向代理,并认识到 Nginx 写入了两个文件 htmllog。在 access.log 中,我可以看到用户名。我的 Nginx 配置文件的重要部分包含这部分

http {
    server_tokens off;
    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/nginx_shiny_access.log;

    sendfile    on;
    keepalive_timeout 65;
    auth_ldap_cache_enabled on;
    auth_ldap_cache_expiration_time 10000;
    auth_ldap_cache_size 1000;
 

我可以在 logs/nginx_shiny_access.log 中看到用户名,因为 $remote_user

如何获取 html 文件中的用户名,只是 临时 因为我需要应用程序中的用户名,但我不知道如何获取他们? 提前谢谢你。

在反向代理的情况下,nginx.conf一般有以下结构:

http{ ...
...
   ldap_server MY_WEBSITE {
       url ...
        binddn ...;
        binddn_passwd ...;
        group_attribute member;
        group_attribute_is_dn on;
                           }
    server {
        listen 443 ssl http2;
        server_name  localhost *.example.com;
        ssl_certificate     /apps/my.cer;
        ssl_certificate_key /apps/my.key;
        proxy_max_temp_file_size 0;
        add_header xv-nginx-remote_user $remote_user;
           }
}

新的是add_header xv-nginx-remote_user $remote_user;

然后,可以在ui.R中定义一个java脚本函数:

library(shinyjs)
library(shiny)
    
    shinyUI(fluidPage(
      
    useShinyjs(),  # Set up 
    tags$script('
        shinyjs.init = function() {
        var client = new XMLHttpRequest();
        client.open("GET", "" , true);
        client.send();
        return client.onreadystatechange = function() {
        var remote_user = client.getResponseHeader("xv-nginx-remote_user");
        Shiny.onInputChange("USERNAME", remote_user);}
        };
      '),
      
      verbatimTextOutput("USERNAME")
      
))

并且必须在 server.R

中请求 LDAP 组中的成员
     if(Sys.info()["sysname"] == "Linux") {
        ldap.members <- paste("ldapsearch -LLL -x -h dcwi.org.com -b \"dc=org,dc=com\" -D \
"CN=",Sys.getenv("ldaptu"),",OU=...,DC=org,DC=com\" -w ",Sys.getenv("ldappwd"),"\"CN=....\" member")
        ....
      }