ShinyProxy配置子域名直访指定应用的Nginx反向代理问题
问题场景
- 基于Docker + ShinyProxy部署的Shiny应用
01_hello可通过serveripaddress:8080/app/01_hello正常访问 - 需要配置子域名
theapp.company.com,直接访问该域名即可打开目标应用,无需展示ShinyProxy应用列表页 - 初始Nginx配置直接将根路径反向代理到
http://localhost:8080/app/01_hello时访问报错,报错截图如下:
- 将代理目标改为
http://localhost:8080时,访问域名会先进入ShinyProxy全应用列表落地页,手动跳转到/app/01_hello才能正常使用应用,不符合预期
初始错误Nginx配置片段:
location / { proxy_pass http://localhost:8080/app/01_hello; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 600s; proxy_redirect off; proxy_set_header Host $http_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; }
正确配置步骤
直接将proxy_pass指向应用子路径报错的核心原因是:ShinyProxy返回的静态资源、Websocket接口、重定向地址都默认携带/app/[应用名]前缀,未做路径重写时浏览器会从根路径请求这些资源,导致404或连接失败。需要同时调整ShinyProxy和Nginx两层配置:
1. 修改ShinyProxy配置
编辑ShinyProxy的application.yml配置文件,添加以下配置,指定默认落地页为目标应用,同时开启反向代理头识别:
server: forward-headers-strategy: framework servlet: context-path: / proxy: landing-page: /app/01_hello hide-navbar: true # 单应用场景可选配置,隐藏顶部导航栏获得更纯净的应用体验
修改完成后重启ShinyProxy服务让配置生效。
2. 调整Nginx反向代理规则
更新子域名对应的Nginx配置,增加路径重写和重定向替换规则,保证所有请求正确转发到对应应用路径:
location / { # 将所有根路径请求重写到ShinyProxy的目标应用路径下 rewrite ^/(.*)$ /app/01_hello/$1 break; proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 600s; # 替换ShinyProxy返回的重定向地址,去掉应用路径前缀 proxy_redirect ~^/app/01_hello/(.*)$ /$1; proxy_set_header Host $http_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; }
配置保存后先执行语法校验,确认无误后重载Nginx:
# 校验配置语法 nginx -t # 重载配置生效 nginx -s reload
配置生效后直接访问theapp.company.com即可直接打开01_hello应用,静态资源加载、Websocket连接、页面跳转都可正常运行。
扩展说明:如果需要在同一个ShinyProxy实例上给不同应用绑定独立子域名,只需要为每个子域名新增独立的Nginx server块,对应修改rewrite规则中的应用名、proxy_redirect匹配规则即可,无需调整ShinyProxy基础运行配置。
内容的提问来源于stack exchange,提问作者Mwavu
相关产品推荐
相关产品推荐

