我们正在尝试更新内部服务器基础结构,并通过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
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
?
感谢您的帮助, 托比
答案 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;
目前您基本上有一个代理,我们也需要反向代理。让我知道这是否有效。