如何配置Shiny Server实现生产与开发版本应用同时部署
问题原因
你当前配置出现404的核心原因是:Shiny Server处理location匹配时,会默认把请求路径中的匹配部分拼接到你配置的app_dir路径后查找资源。你访问baseurl.com/dev时,服务端实际会尝试读取/srv/shiny-server/dev/dev目录下的应用,该目录不存在就返回了404。
修复后的配置
你只需要在/dev的location块中添加rewrite规则,去掉请求路径的/dev前缀即可,修改后完整配置如下:
# 配置Shiny Server以shiny用户身份运行应用 run_as shiny; # 定义监听3838端口的服务 server { listen 3838; # 根路径对应生产环境应用,配置保持不变 location / { app_dir /srv/shiny-server/prod; log_dir /var/log/shiny-server; } # /dev路径对应开发环境应用 location ^~ /dev { # 去掉请求路径中的/dev前缀,再匹配app_dir下的资源 rewrite ^/dev(/.*)$ $1 break; app_dir /srv/shiny-server/dev; # 建议单独配置开发环境日志目录,避免和生产日志混淆 log_dir /var/log/shiny-server-dev; } }
生效与校验
- 配置修改完成后执行重启命令生效:
sudo systemctl restart shiny-server - 重启后访问
baseurl.com/dev即可正常打开开发环境应用,根路径baseurl.com的生产环境应用不受影响 - 如果仍有访问异常,可检查
/srv/shiny-server/dev目录的权限,确保shiny用户对该目录拥有读和执行权限
内容的提问来源于stack exchange,提问作者Dylan Russell
相关产品推荐
相关产品推荐

