带有 nginx 和 https 的闪亮服务器:应用程序的 404
Posted
技术标签:
【中文标题】带有 nginx 和 https 的闪亮服务器:应用程序的 404【英文标题】:Shiny server with nginx and https : 404 for apps 【发布时间】:2019-11-10 18:38:36 【问题描述】:我的 URL 上的 Shiny Server 工作正常,但无法通过安全连接访问应用程序。
我使用 Certbot 安装 SSL 证书,并按照this guide 中的步骤 3 设置反向代理。
现在在浏览器中输入我的 URL 会直接将我带到带有默认“欢迎使用 Shiny Server!”的 https 站点。页面(即我的服务器 ip 在端口 3838)。所有的文字都在那里(“如果你看到这个页面,这意味着 Shiny Server 已经安装......等等”)。
问题在于示例应用没有显示 - 它们都返回“404 Not Found”。
我的 nginx 服务器文件(nginx/sites-available/shiny-server)如下所示:
server
listen 80 ;
listen [::]:80 ;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name myURL.com; # managed by Certbot
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/myURL.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/myURL.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location /
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
proxy_pass http://server.ip.address:3838/;
proxy_redirect http://server.ip.address:3838/ https://$host/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 20d;
我已经尝试根据 Stack Overflow 和其他地方的其他答案(例如 here)以多种方式修改 location
部分,但没有解决问题。
我在nginx.conf
的底部添加了以下内容:
# Map proxy settings for RStudio
map $http_upgrade $connection_upgrade
default upgrade;
'' close;
我的shiny-server.conf
看起来像这样(默认):
# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;
# Define a server that listens on port 3838
server
listen 3838;
# Define a location at the base URL
location /
# Host the directory of Shiny Apps stored in this directory
site_dir /srv/shiny-server;
# Log all Shiny output to files in this directory
log_dir /var/log/shiny-server;
# When a user visits the base URL rather than a particular application,
# an index of the applications available in this directory will be shown.
directory_index on;
如果我转到 http://my.server.ip:3838 或 http://myURL.com:3838,应用程序可以正常工作,但如果我转到 https://myURL.com 或 http://myURL.com 则无法正常工作(两种情况下都加载了闪亮的服务器页面,但示例应用程序是 404)。
【问题讨论】:
【参考方案1】:好的,原来try_files $uri $uri/ =404;
行导致了问题。评论出来,一切都很好。
【讨论】:
以上是关于带有 nginx 和 https 的闪亮服务器:应用程序的 404的主要内容,如果未能解决你的问题,请参考以下文章
在闪亮的服务器不工作的情况下,在 NGINX 中将 HTTP 重定向到 HTTPS
如何根据带有闪亮元素的 R Markdown 文档中的条件禁用按钮?
是否可以使用 NGINX 将多个闪亮的应用程序部署到一台服务器?