可以shiny的决定使用谁login到nginx反向代理

我已经成功地为我的shiny服务器实现了一个nginx反向代理,以便进行SSL和用户身份validation。 但是,我仍然有一个空白,我不明白。 有没有办法让我的shiny的应用程序来确定哪个用户实际login?

这是我的/ etc / nginx / sites-available / default

server { listen 80; return 301 https://$host$request_uri; } server { listen 443; server_name myserver.com; ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; access_log /var/log/nginx/shiny.log; location / { 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 X-Forwarded-Proto $scheme; # Fix the “It appears that your reverse proxy set up is broken" error. proxy_pass http://localhost:3838; proxy_read_timeout 90; proxy_redirect http://localhost:3838 https://myserver.com; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; } } 

用我的位置的最后两行我希望有一个用户名头。 我发现这里的提示。 我发现这让我看到我的头信息,但没有看到我的用户名头。

编辑:

伯特·涅夫的引用,我明白为什么上述不起作用。 但是,服务器可以访问在会话中唯一的HTTP_SEC_WEBSOCKET_KEY标头。 看来,如果我们可以让Nginxlogging这个值,那么服务器就可以查看这个代码来将头部与实际的用户进行匹配。 话虽如此,我不知道这是否可行,我不知道如何让Nginxlogging这个值。

基于Shiny Docs,这只是一个Shiny server Professional功能,您需要使用whitelist_headers指令来获取这些标题:

4.9代理标题通常情况下,发送到Shiny server的HTTP标题不会被转发到底层的Shiny应用程序。 但是,Shiny server Professional能够使用whitelist_headers配置指令将指定的标题转发到Shiny应用程序,可以在全局或特定的服务器或位置进行设置。

更新:只测试了非pro闪亮的服务器安装中的whitelist-headers选项,我不能得到自定义标题显示。 我确实通过使用netcat向nginx发送头文件来显示传入数据(nc -l 8080和在nginx.conf文件中快速更改为proxy_pass)。

更新2:不能让NGINX记录HTTP_SEC_WEBSOCKET_KEY头(在日志规范中指定授权头后记录授权头),在nginx和Shiny server之间的流量中我看不到它,我认为它可以归结为获得Shiny server Professional或修改闪亮的源代码以将授权头传递给应用程序。