我们正在尝试更新我们的内部服务器基础设施,并通过Nginx服务器代理对R闪亮Web服务器的所有访问。我可以从闪亮的服务器获得响应,但无法通过Nginx服务器获得相关文件,如css/js。
设置:
-
2个docker容器(1个用于托管nginx,1个运行R用于闪亮的应用程序(
-
两个码头集装箱都是码头网络的成员
-
闪亮服务器侦听端口7676(内部ip地址172.18.0.3(
-
nginx服务器托管了一些带有iFrame的静态html文件(遗留的,无法摆脱(,这些文件应该显示闪亮的服务器的内容
-
访问nginx-server/QueryLandscape.html加载带有iFrame
<iframe src="ilandscape"></iframe>
的页面 -
iFrame工作:它加载R-shine应用程序的静态部分,但不加载相关的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到proxy/redirecthttp://nginx-server:8001/ilandscape/shared/shiny.css --> 172.18.0.3:7676/shared/shiny.css
缺少什么?
谢谢你的帮助,Tobi
看起来充当浏览器的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;
基本上你现在有一个代理,我们也想要一个反向代理。让我知道这是否有效。