我们正在尝试更新我们的内部服务器基础架构,并通过 Nginx 服务器代理对我们 R Shiny 网络服务器的所有访问。我能够从 Shiny 的服务器获得响应,但我无法通过 Nginx 服务器获得相关文件,如 css/js。
设置:
2 个 docker 容器(1 个用于托管 nginx,1 个运行 R 用于 Shiny 的应用程序)
两个 docker 容器都是 docker 网络的成员
shiny server监听7676端口(内部ip-address 172.18.0.3)
nginx 服务器正在托管一些带有 iFrame 的静态 html 文件(遗留的,无法下车),它应该显示 shiny 服务器的内容
访问 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
?
感谢您的帮助, 托比
最佳答案
看起来充当浏览器的 iframe 正在接收主机名而不是资源的完整路径。您能否设置以下 ReverseProxy header 并试一试:
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;
基本上您现在有一个代理,我们也需要一个反向代理。让我知道这是否有效。
关于r - Nginx:代理传递/代理重定向到 Shiny 的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51269677/