我想在AWS实例上运行RStudio服务器,并通过SSL加密连接访问该服务器。
如何设置呢?
我想在AWS实例上运行RStudio服务器,并通过SSL加密连接访问该服务器。
如何设置呢?
使用Ubuntu作为操作系统,在安全组中添加一个入站连接端口为443的HTTPS连接,同时还要通过端口22进行SSH连接。您的实例还必须具有公共DNS。
一旦机器启动并运行,使用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
.deb
文件的确切名称会随着新版本的发布而更改。sudo apt-get install nginx
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是重要的,原因在这里解释。
最后编辑您的/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。
proxy_redirect http://localhost:8787/ $scheme://$host:$server_port/;
进行替换。 - Marcel Boldtsudo cp /etc/pam.d/login /etc/pam.d/rstudio
然后使用passwd
设置用户密码。 - dyoung