【发布时间】:2019-04-05 18:06:26
【问题描述】:
我有兴趣在 AWS 实例上运行 RStudio 服务器并通过 SSL 加密连接访问服务器。
如何设置?
【问题讨论】:
标签: amazon-web-services ssl rstudio rstudio-server
我有兴趣在 AWS 实例上运行 RStudio 服务器并通过 SSL 加密连接访问服务器。
如何设置?
【问题讨论】:
标签: amazon-web-services ssl rstudio rstudio-server
使用 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 服务器的更新版本而改变。
我们将按照here 和here 提供的说明将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/;进行替换。