带有 nginx/Ubuntu 20.04.1 和自定义域的闪亮应用程序/闪亮服务器

时间:2021-03-08 02:17:12

标签: r nginx shiny digital-ocean

我希望通过 Google 域(比方说:dataiscool.net)在具有自定义域的 Digital Ocean Droplet 上托管一些 Shiny 应用程序。我已按照此处的说明设置 Droplet 并安装了闪亮的服务器:https://deanattali.com/2015/05/09/setup-rstudio-shiny-server-digital-ocean/

Shiny Server 服务器已设置并清理服务器块,以便将端口 :3838 替换为 /shiny/。效果很好。

我已将我的注册商设置为指向 Digital Ocean 域名服务器,如下所示:https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars

并按照此处所述在 Digital Ocean 上设置 DNS 端:https://www.digitalocean.com/docs/networking/dns/how-to/add-domains/

我可以通过 IP(例如 64.238.119.95/shiny/app)访问我的 Shiny 应用程序,但我无法在自定义域(例如 dataiscool.net/shiny/app)上访问它(404 错误)

我是 nginx、网络服务器等方面的新手,但我无法开始解决可能出错的地方 - 无论是 Shiny 服务器、nginx 还是 DNS 方面的问题。

2 个答案:

答案 0 :(得分:0)

事实上,您可以使用 IP 地址访问资源,但在使用域名时则无法访问,这表明这是 DNS 问题。根据信息很难说除此之外(除了你应该确保你有一个指向你的 IP 地址的 A 记录)。

使用命令行工具“dig”(Linux 或 Mac)或“nslookup”(Windows)可能会帮助您验证 DNS 设置是否正确。

您还可以使用 https://dnslytics.com/ 来验证您的 DNS 设置。

答案 1 :(得分:0)

我想通了,并想与其他可能遇到相同问题的人分享。这是 nginx 的所有配置问题。当您安装和加载 nginx 时,您会在 /etc/nginx/sites-enabled/default 中获得一个默认配置文件 - 您需要取消链接或删除它!这样,许多教程都可以使用 proxypass 模式:

location /shiny/ {
  proxy_pass http://127.0.0.1:3838/;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade"; 
  rewrite ^(/shiny/[^/]+)$ $1/ permanent;
}

location /rstudio/ {
  proxy_pass http://127.0.0.1:8787/;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}