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

如何在Docker容器中以HTTPS方式运行R Shiny应用

解决Docker中R Shiny应用的HTTPS访问问题

方案一:利用现有Apache做反向代理(推荐)

你已经配置好Apache和SSL证书,直接通过反向代理将HTTPS请求转发到Shiny应用的HTTP服务是最便捷的方式:

  1. 启用Apache必要模块

    a2enmod proxy proxy_http ssl proxy_connect
    
  2. 创建Shiny应用的HTTPS反向代理配置
    在/etc/apache2/sites-available/下新建shiny-proxy-ssl.conf文件,内容如下:

    <VirtualHost *:3838>
        ServerName subdomain.mydomain.com
    
        # 启用SSL并指定证书路径
        SSLEngine on
        SSLCertificateFile /path/to/your/certificate.crt  # 替换为你的证书实际路径
        SSLCertificateKeyFile /path/to/your/private.key    # 替换为你的私钥实际路径
        # 若存在中间证书,取消下方注释并填写路径
        # SSLCertificateChainFile /path/to/your/chain.crt
    
        # 反向代理到本地Shiny应用的HTTP服务
        ProxyPass / http://localhost:3838/
        ProxyPassReverse / http://localhost:3838/
    
        # 日志配置(可选)
        ErrorLog ${APACHE_LOG_DIR}/shiny-ssl-error.log
        CustomLog ${APACHE_LOG_DIR}/shiny-ssl-access.log combined
    </VirtualHost>
    
  3. 启用虚拟主机并调整Apache监听端口

    a2ensite shiny-proxy-ssl.conf
    

    编辑/etc/apache2/ports.conf,添加一行:

    Listen 3838 https
    
  4. 重启Apache服务

    systemctl restart apache2
    
  5. 优化Docker端口映射(可选)
    为避免直接暴露HTTP端口到外部,将容器端口仅映射到服务器本地回环地址:

    docker run -dt -p 127.0.0.1:3838:3838 my_app_docker_image
    

方案二:让Shiny应用直接处理HTTPS

若不想依赖Apache,可让Shiny本身加载SSL证书提供HTTPS服务:

  1. 将SSL证书和私钥放到服务器本地目录,比如/opt/shiny-ssl/

  2. 修改Docker启动命令,挂载证书目录并指定Shiny的HTTPS参数:

    docker run -dt -p 3838:3838 \
      -v /opt/shiny-ssl/:/etc/shiny-server/ssl/ \
      my_app_docker_image \
      shiny-server --ssl-certificate /etc/shiny-server/ssl/certificate.crt \
                  --ssl-key /etc/shiny-server/ssl/private.key
    

    注意:若你的Shiny镜像中shiny-server的配置路径不同,需调整证书挂载和引用的路径。

验证与排错

完成配置后访问https://subdomain.mydomain.com:3838即可。若出现问题:

  • 查看Apache错误日志:/var/log/apache2/shiny-ssl-error.log
  • 查看容器运行日志:docker logs <容器ID>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:56:10