我希望通过 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 方面的问题。
答案 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";
}