【问题标题】:Letsencrypt SSL on node and rails app on same DigitalOcean droplet. Works for rails but not for nodeLetsencrypt 节点上的 SSL 和同一 DigitalOcean 液滴上的 rails 应用程序。适用于导轨但不适用于节点
【发布时间】:2016-03-20 18:00:17
【问题描述】:

我有两个应用程序,一个是 Rails 应用程序,它使用 Let's encrypt for SSL 和 nginx 作为服务器。它部署在 Digital Ocean 上。 我还添加了一个使用 Express 构建的简单节点应用程序(为我的 rails 应用程序提供补充功能),它侦听端口 8080。

我希望我的节点应用程序使用与我的 rails 应用程序相同的 SSL 证书。 如何通过使用 nginx 配置它来做到这一点?还是有更好的方法来实现这一目标?

这是我的 nginx 配置文件。

server {
                listen 443 ssl;
            server_name mydomain.com www.mydomain.com;

        ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

        passenger_enabled on;
        rails_env    production;
        root         /home/deploy/mydomain/current/public;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

server {
    listen 80;
    server_name mydomain.com;
    return 301 https://$host$request_uri;
}

【问题讨论】:

    标签: ruby-on-rails node.js ssl nginx lets-encrypt


    【解决方案1】:

    您需要生成 2 个证书,每个应用程序一个,指定不同的端口或子域。然后你需要2个不同的nginx conf

    server {
        listen 443 ssl;
        server_name abc.xyz www.abc.xyz;
        ssl_certificate /etc/letsencrypt/live/abc.xyz/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/abc.xyz/privkey.pem;
        location / {
            root  /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        error_page  500 502 503 504  /50x.html;
        location = /50x.html {
            root  /usr/share/nginx/html;
        }
    }
    
    
    server {
        listen 443 ssl;
        server_name api.abc.xyz;
        ssl_certificate /etc/letsencrypt/live/api.abc.xyz/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/api.abc.xyz/privkey.pem;
        location / {
            proxy_pass http://localhost:3000/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-06
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2018-06-25
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多