簡體   English   中英

如何在部署在 EC2 實例上的 Nodejs Express 服務器中使用 HTTPS?

[英]How to use HTTPS in Nodejs express server Deployed on EC2 instance?

我有一個在我的 Ec2 實例上運行的 NodeJS Express 服務器,現在我已經替換了代碼以使其成為 https 服務器。 現在它需要 pem 和證書文件,所以我如何生成這些文件,例如,如果我使用 lets encrypt for CA SSL。請指導我,因為我是這部分的新手,所以最簡單的方法是什么,例如讓我的服務器安全

我建議在您的 nodejs 應用程序前面使用反向代理,例如 nginx,以簡化證書管理。 您可以通過多種方式完成此操作,但一種設置可能如下所示:

  • 在您的實例上安裝 Let's Encrypt 客戶端 Certbot。
# for a debian OS
sudo apt-get update
sudo apt-get install certbot
  • 使用 Certbot 為您的服務器生成 SSL 證書。 這可以使用 certbot certonly 命令完成,后跟 --standalone 標志以運行獨立 Web 服務器,以及 -d 標志以指定要為其生成證書的域名。 例如:
sudo certbot certonly --standalone -d example.com
  • 在您的主機系統上創建一個 nginx 配置文件,位於/etc/nginx/nginx.conf中,其中包含類似於以下內容的內容:
server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/key.pem;

    location / {
      proxy_pass http://<your-nodejs-server-ip>:<nodejs-server-port>;
      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;
    }
}
  • 為 nginx 代理創建一個 Docker 容器(如果需要,請安裝 docker )。 您會注意到用於將證書和配置安裝到容器的-v標志。
docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/letsencrypt/live/example.com/fullchain.pem:/etc/nginx/cert.pem -v /etc/letsencrypt/live/example.com/privkey.pem:/etc/nginx/key.pem -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf nginx 
  • 要在適當的時候更新您的證書,請運行以下命令(考慮將其添加到 cron 作業中,這樣您就不必照看 SSL 更新):
certbot certonly --force-renew -d example.com
  • 如果您更改了 nginx 配置,或者需要在證書過期時更新證書,請確保像這樣重新加載 nginx:
docker exec nginx nginx -s reload

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM