Nginx:代理传递/代理重定向到闪亮的Web应用程序

时间:2018-07-10 15:56:31

标签: r docker nginx shiny

我们正在尝试更新内部服务器基础结构,并通过Nginx服务器代理对R闪亮Web服务器的所有访问。我可以从闪亮的服务器获得响应,但无法通过Nginx服务器获得诸如css / js之类的相关文件。

设置:

  • 2个docker容器(1个用于托管nginx,1个用于运行R的应用程序)

  • 两个docker容器都是docker网络的成员

  • 发光服务器侦听端口7676(内部ip地址172.18.0.3)

  • nginx服务器使用iFrame托管了一些静态html文件(旧版,无法使用),该文件应显示闪亮服务器的内容

  • 访问 nginx-server / QueryLandscape.html 会使用iFrame <iframe src="ilandscape"></iframe>

  • 加载页面
  • iFrame可以正常工作:它会加载R-shiny应用程序的静态部分,但不会加载相关的JS / CSS / ....(例如http://nginx-server:8001/ilandscape/shared/shiny.css

  • 在nginx-docker容器中,我可以访问此CSS文件wget 172.18.0.3:7676/shared/shiny.css

Nginx.conf

location /ilandscape/ {
    proxy_pass http://172.18.0.3:7676/;
    #proxy_redirect http://172.18.0.3:7676/ $scheme://$host/;

    # websocket headers
    proxy_set_header Upgrade $http_upgrade;

    proxy_http_version 1.1;
    proxy_read_timeout 20d;
    proxy_set_header Host $host;
}

我在Nginx conf中缺少什么以代理/重定向http://nginx-server:8001/ilandscape/shared/shiny.css --> 172.18.0.3:7676/shared/shiny.css

感谢您的帮助, 托比

1 个答案:

答案 0 :(得分:0)

看起来像充当浏览器的iframe接收的是主机名,而不是资源的完整路径。您可以设置以下ReverseProxy标头并进行操作吗?

proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

目前您基本上有一个代理,我们也需要反向代理。让我知道这是否有效。