You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制AWS EC2上托管的RShiny仪表盘访问并配置自定义URL

解决RShiny仪表盘部署AWS EC2的两个核心问题

一、限制仅本组织用户访问仪表盘

这里提供三种不同复杂度的方案,按需选择:

  • EC2安全组IP过滤(最简单):
    直接在EC2实例绑定的安全组中,将Shiny服务默认端口(通常是3838)的入站规则来源,设置为你们组织的公网IP段(比如10.0.0.0/24这类格式),拒绝所有其他IP的访问请求。
  • Shiny Server内置账号密码认证:
    先安装工具生成密码文件:
    sudo apt-get install apache2-utils
    sudo htpasswd -c /etc/shiny-server/.htpasswd 你的用户名
    
    接着修改Shiny Server配置文件/etc/shiny-server/shiny-server.conf,添加认证规则:
    location / {
      auth_basic "组织内部访问";
      auth_basic_user_file /etc/shiny-server/.htpasswd;
      site_dir /srv/shiny-server;
      log_dir /var/log/shiny-server;
      directory_index on;
    }
    
    重启Shiny Server生效:sudo systemctl restart shiny-server
  • AWS Cognito OAuth2认证(进阶,适配组织IAM体系):
    搭建Nginx反向代理,对接AWS Cognito用户池,只允许组织内已注册的Cognito用户或IAM用户通过身份验证后访问仪表盘。

二、配置辨识度高的自定义URL

按以下步骤操作:

  • 绑定弹性IP(避免IP变动):
    给EC2实例分配一个AWS弹性IP并绑定,这样实例重启后公网IP不会改变,后续DNS配置不用重复修改。
  • DNS解析配置:
    在你的域名服务商(比如AWS Route 53)控制台,添加一条A记录,将自定义域名(比如shiny.yourcompany.com)指向EC2的弹性IP地址。
  • Nginx反向代理(去掉端口号):
    安装Nginx后,创建配置文件/etc/nginx/sites-available/shiny:
    server {
      listen 80;
      server_name shiny.yourcompany.com;
    
      location / {
        proxy_pass http://localhost:3838;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }
    
    启用配置并重启Nginx:
    sudo ln -s /etc/nginx/sites-available/shiny /etc/nginx/sites-enabled/
    sudo systemctl restart nginx
    
    此时直接访问自定义域名就能打开仪表盘,不用加:3838端口。
  • 可选:配置HTTPS证书:
    用Certbot工具申请Let's Encrypt免费SSL证书,给Nginx配置HTTPS,让访问更安全。

内容的提问来源于stack exchange,提问作者magladde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:07:34