相关疑难解决方法(0)

如何使用SSL HTTPS在Amazon EC2 AWS中保护Nginx前端和Puma后端

我正在尝试将我的网站从http迁移到https。该体系结构是:在Nginx服务器(侦听端口80)上运行的angularJS Webapp前端,它将请求发送到在Puma服务器(侦听端口8080)上运行的Rails API应用。两台服务器都一起位于Amazon EC2实例中。

这是我第一次迁移到HTTPS,我一点也不熟练。读了很多书,我取得了一些进步,但现在我陷入了困境。

我想确认我是正确的方法还是错误的方法。

在这一刻:

  1. 我获得了一个Let's加密证书,安装并更新了我的Nginx服务器。现在,服务器正在侦听443,而SSL正在前端工作。
  2. 我以为足以保护一个站点,但我意识到从前端发送到后端的请求中出现了blocked:mixed-content错误。
  3. 因此,我想我也需要保护后端。(请确认)
  4. 现在(这仅在开发中,而不是在AWS实例中工作)为了保护后端Puma服务器,我采用了一种非常简单的方法:由于Rails API是私有的,因此我创建了一个自签名SSL证书,并仅使用它来启动这样的Puma服务器:

    捆绑执行程序puma -b'ssl://127.0.0.1:3000?key = puma.server.key&cert = puma.server.crt'-e开发-S〜/ puma -C config / puma / development.rb

如前所述,这正在开发中。我的Nginx服务器正在侦听443,并将请求发送到在端口3000侦听的Puma。

  1. 在这一点上,我尝试在EC2生产实例中执行相同的操作。但是在这里,我有堵墙。我刚刚创建了另一个自签名证书,并以相同的方式启动了puma服务器。但是连接被拒绝了。我了解问题是EC2安全规则中的端口3000未打开。我试图同时在HTTPS中打开该端口,但EC2不允许我使用该端口,因为它仅适用于端口443和HTTP,但是由于SSL无效而无法启动服务器。

因此,在这一点上,我想知道我是否采用了正确的方法,但是我只是缺少了一些东西,否则,对于EC2实例来说这是错误的方法,我需要做一些真正不同的事情。注意:我已经阅读了一些有关如何配置Nginx服务器以代理https的内容,但目前还不太了解。我应该这样走吗?

@ffeast回答后的评论和问题:

我了解您的做法。我建议采用第二种方法。但是,我有一些问题:

  1. 我是否可以解决通过这种方法获得的blocked:mixed-content错误?为什么?我的意思是,Rails API请求是否应该更改?注意:目前,在Angular中,我有一些资源可以发送请求,例如:// domain-name:8080 / action,而Puma服务器正在侦听该端口中的请求。我目前没有任何代理通行证。

  2. 我认为您包括连接到Puma套接字的de Nginx配置,我想我需要创建此Puma套接字,我将需要检查如何做。如果您知道包含示例将有帮助。如果使用此套接字配置Puma,是否需要在特定端口中启动Puma?

  3. 我试图理解整个图片,但我仍然困惑:3.1对API的请求(来自Angular Nginx)应该是什么样的?3.2是否应该在特定端口上启动Puma?我不知道套接字方法是否需要... 3.3以及代理传递配置应如何匹配这些请求。

您能否澄清一下可能会更新您的示例?假设目前的请求就像// domain-name:8080 / action

更新 我正在尝试配置Ningx以将请求传递给PUMA套接字(目前正在开发中)。我遇到了错误,请查看一篇新文章以保持此整洁:Nginx代理传递给Rails API

更新2 它正在工作!我的网站安全无误!这是我的配置。

upstream api.development {
    # Path to Puma SOCK file, as defined previously
    server unix:/tmp/puma.sock fail_timeout=0;
}

server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /keys/ssl/development.server.crt;
        ssl_certificate_key  /keys/ssl/development.server.key;

    #    ssl_session_cache    shared:SSL:1m; …
Run Code Online (Sandbox Code Playgroud)

ssl https nginx amazon-ec2 puma

0
推荐指数
1
解决办法
1577
查看次数

标签 统计

amazon-ec2 ×1

https ×1

nginx ×1

puma ×1

ssl ×1