如何设置RStudio服务器以在AWS上运行SSL?

aro*_*kem 5 ssl amazon-web-services rstudio rstudio-server

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

我该如何设置?

aro*_*kem 7

除了通过端口22进行的SSH连接外,还应启动一个以Ubuntu为操作系统和安全组的AWS实例,该安全组在端口443上具有HTTPS的入站连接。

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

通过执行以下操作,按照此处提供的说明安装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
Run Code Online (Sandbox Code Playgroud)

注意:.deb文件的确切名称将随RStudio服务器的较新版本而变化。

我们将按照此处此处提供的说明配置nginx Web 服务器,以将代理 RStudio服务器反向到Web浏览器并使用SSL。要安装nginx,请执行:

sudo apt-get install nginx
Run Code Online (Sandbox Code Playgroud)

创建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
Run Code Online (Sandbox Code Playgroud)

后一个命令创建两个文件:密钥文件和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;
        }
}
Run Code Online (Sandbox Code Playgroud)

您将server_nameAWS实例的公共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;
                  }

}
Run Code Online (Sandbox Code Playgroud)

的设置server_names_hash_bucket_size到128是很重要的原因解释这里

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

www-address=127.0.0.1
Run Code Online (Sandbox Code Playgroud)

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

sudo adduser arokem
Run Code Online (Sandbox Code Playgroud)

现在,您应该能够重新启动nginx和rstudio-server了:

sudo rstudio-server restart
sudo systemctl restart nginx
Run Code Online (Sandbox Code Playgroud)

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