【问题标题】:How can I set up an RStudio server to run with SSL on AWS?如何设置 RStudio 服务器以在 AWS 上使用 SSL 运行?
【发布时间】:2019-04-05 18:06:26
【问题描述】:

我有兴趣在 AWS 实例上运行 RStudio 服务器并通过 SSL 加密连接访问服务器。

如何设置?

【问题讨论】:

    标签: amazon-web-services ssl rstudio rstudio-server


    【解决方案1】:

    使用 Ubuntu 作为您的操作系统和一个安全组启动一个 AWS 实例,该实例在端口 443 上具有 HTTPS 的入站连接以及通过端口 22 的 SSH 连接。您的实例还必须具有公共 DNS。

    机器启动并运行后,使用 SSH 登录。

    使用here提供的说明安装RStudio服务器,通过执行:

    sudo apt-get update
    sudo apt-get install r-base
    sudo apt-get install gdebi-core
    wget https://download2.rstudio.org/rstudio-server-1.1.463-amd64.deb 
    sudo gdebi rstudio-server-1.1.463-amd64.deb
    

    注意:.deb 文件的确切名称会随着 RStudio 服务器的更新版本而改变。

    我们将按照herehere 提供的说明将nginx 网络服务器配置为reverse proxy RStudio 服务器到网络浏览器并使用SSL。安装 nginx 执行:

    sudo apt-get install nginx
    

    创建 SSL 证书:

    sudo mkdir /etc/nginx/ssl
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
    

    后一个命令会创建两个文件:一个密钥文件和一个 SSL 证书文件。

    /etc/nginx/conf.d/rstudio.conf 下创建一个文件并对其进行编辑(注意:您需要使用sudo nano /etc/nginx/conf.d/rstudio.conf 或类似名称进行编辑)以添加:

    server {
            listen 80;
            listen [::]:80;
    
            listen 443 ssl;
            ssl_certificate /etc/nginx/ssl/nginx.crt;
            ssl_certificate_key /etc/nginx/ssl/nginx.key;
    
            server_name ec2-11-22-333-444.us-west-2.compute.amazonaws.com;
    
            location / {
                 proxy_pass http://localhost:8787/;
                 proxy_redirect http://localhost:8787/ $scheme://$host/;
                 proxy_http_version 1.1;
                 proxy_set_header Upgrade $http_upgrade;
                 proxy_set_header Connection $connection_upgrade;
                 proxy_read_timeout 20d;
            }
    }
    

    您将 server_name 字段替换为您的 AWS 实例的公共 DNS IP。

    此外,您需要编辑/etc/nginx/nginx.conf 文件,以将以下行添加到http 块中:

    http {
           # All you other settings up here... 
    
           server_names_hash_bucket_size 128;
    
           map $http_upgrade $connection_upgrade {
                  default upgrade;
                  ''      close;
                      }
    
    }
    

    server_names_hash_bucket_size 设置为 128 很重要,原因已解释 here

    最后编辑您的/etc/rstudio/rserver.conf 配置文件以添加以下行:

    www-address=127.0.0.1
    

    接下来为您的用户创建用户帐户。例如:

    sudo adduser arokem
    

    您现在应该可以重新启动 nginx 和 rstudio-server:

    sudo rstudio-server restart
    sudo systemctl restart nginx
    

    然后将您的浏览器指向https://ec2-11-22-333-444.us-west-2.compute.amazonaws.com。您可能会收到来自浏览器的警告,提示它无法识别您的 SSL 证书。忽略此警告(在这种情况下)是安全的,并继续进入 RStudio 服务器登录窗口。使用您刚刚创建的用户登录名来访问 RStudio。

    【讨论】:

    • 所以我认为使用sudo nginx -t 进行 nginx 配置检查肯定有助于发现任何错误。并且可以为 Ubuntu 简化服务器重启命令。我使用了“sudo service rstudio-server restart”和sudo service nginx restart
    • 我建议设置proxy_redirect http://localhost:8787/ $scheme://$host:$server_port/;进行替换。
    猜你喜欢
    • 2021-05-04
    • 2014-04-06
    • 2013-07-12
    • 2018-09-08
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2017-05-12
    • 2016-01-18
    相关资源
    最近更新 更多