是否可以使用 NGINX 将多个闪亮的应用程序部署到一台服务器?

Posted

技术标签:

【中文标题】是否可以使用 NGINX 将多个闪亮的应用程序部署到一台服务器?【英文标题】:Is it possible to deploy multiple shiny apps to one server using NGINX? 【发布时间】:2020-10-23 21:10:12 【问题描述】:

理想情况下,如果我有两个应用程序,我希望一台服务器能够同时为这两个应用程序提供服务。

目前我的配置文件支持一个部署在 3838 端口的闪亮应用程序。

是否可以在另一个端口上运行另一个闪亮服务器实例,以便我的一台服务器可以托管两个不同的应用程序?

如果是这样,如果我尝试完成此操作,配置文件会是什么样子?

提前谢谢你

【问题讨论】:

【参考方案1】:

如果我理解正确,您不希望另一台服务器而是同一台服务器上的另一个应用程序。

不要将两个应用程序在不同端口上侦听与一个服务器和两个应用程序只在一个端口上侦听混淆,因为通常应该只有一个服务器,正如你所说,侦听端口 3838,根据 URL,将提供一个或另一个应用程序。

如果您已经有一个/etc/shiny-server/shiny-server.conf 文件,您应该只添加指令以便服务器将请求发送到一个应用程序而不是另一个应用程序。

您应该使用以下规则编辑该文件:

server 
  ...
  # When accessing yourServer:3838/specialApp1
  location /specialApp1 
    # nginx will send the request to this application
    app_dir /srv/shiny-server/myApp
  
  
  # When accessing yourServer:3838/specialApp2
  location /specialApp2 
    # Nginx will send the request to this application
    app_dir /srv/shiny-server/myApp2
  
...

希望对您有所帮助!如果没有,请发布您的/etc/shiny-server/shiny-server.conf 文件!

【讨论】:

【参考方案2】:

您需要单独的服务器实例,还是需要为两个应用程序提供服务?

在第一次安装 Shiny Server 时,第一页会告诉您如何添加多个应用程序。您应该能够简单地将它们放在单独的文件夹中,例如/srv/shiny-server/app1../app2

Configuration Reference 中也对此进行了描述,位于 2.2.2 位置

server 
  ...
  # Define the location '/specialApp'
  location /specialApp 
    # Run this location in 'app_dir' mode, which will host a single Shiny
    # Application available at '/srv/shiny-server/myApp'
    app_dir /srv/shiny-server/myApp
  
  
  # Define the location '/otherApps'
  location /otherApps 
    # Run this location in 'site_dir' mode, which hosts the entire directory
    # tree at '/srv/shiny-server/apps'
    site_dir /srv/shiny-server/apps;
  
...

【讨论】:

以上是关于是否可以使用 NGINX 将多个闪亮的应用程序部署到一台服务器?的主要内容,如果未能解决你的问题,请参考以下文章

将闪亮应用程序库部署到闪亮服务器的最佳(标准)方法?

如何将闪亮的应用程序部署到 Heroku

使用 nginx 反向代理的 Docker 容器内的闪亮服务器不会遵循 301 重定向

nginx同时部署多个vue项目后请求刷新一直转圈

带有 nginx 和 https 的闪亮服务器:应用程序的 404

尝试用Nginx反向代理解决同时部署多个项目的问题