如何在Google Compute Engine中配置Node.js服务器的HTTPS

如何在Google Compute Engine中配置Node.js服务器的HTTPS

在本文中,我们将看看在Google Compute Engine中部署的Node.js服务器的HTTPS配置。我们将了解如何使用带有HTTPS配置的NGINX服务器设置Node.js服务器的反向代理。

我们将使用GCE(Google Compute Engine)虚拟机来设置我们的应用程序。我们将使用免费的web服务器NGINX。对于这个服务器,我们将安装一个SSL证书来设置HTTPS。我们将通过反向代理将HTTPS流量从NGINX转发到运行在本地主机上的HTTP Node.js服务器。所以,让我们开始设置我们的服务器。

先决条件:

  • Google Cloud
  • Node.js
  • Web开发
  • 网络

    在GCE虚拟机上安装NGINX、OpenSSL、NodeJS和NPM的步骤:

首先,使用以下命令更新您的软件包。

sudo apt-get update

运行以下命令安装NodeJS和npm。

sudo apt-get install nodejs
sudo apt-get install npm

使用以下命令安装NGINX和OpenSSL。

sudo apt-get install nginx
sudo apt-get install openssl

配置新的GCE VM的步骤:

  • 在Google Cloud控制台的侧边导航中,导航到 计算引擎 > VM实例
  • 在VM实例中选择创建实例。在本教程中,我们将使用带有N1系列机器的Ubuntu。根据您的服务器需求填写详细信息。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 请确保您在防火墙内启用了HTTP和HTTPS流量。如果需要,您可以指定其他选项,否则保持默认设置。完成后点击创建。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 创建完成后,请转到虚拟机概述页面,并复制我们将在教程的下一部分中使用的外部IP地址。

配置NodeJS项目的步骤:

对于本教程,您可以使用现有的NodeJS项目,或者按照以下步骤创建一个示例项目。

  • 首先,我们将为示例项目创建一个目录(这里使用gfg)。然后从该目录运行以下命令以初始化npm。根据您的要求填写所需的详细信息。
npm init
  • 现在我们将安装 Express 并设置我们的 app.js 文件。运行以下命令来安装 Express。
npm install express
  • 在项目目录中创建一个app.js文件,然后添加你的代码。我们将使用下面的示例代码来创建一个简单的 ‘Hello World’ 应用程序。
const express= require('express'); 
const app=express() 
const port=3000 
  
app.get('/',(req,res)=>{ 
    res.send('Hello From GFG Server'); 
}); 
  
app.listen(port,()=>{ 
    console.log(`Server started on port ${port}`); 
})
  • 保存app.js文件,现在使用以下命令运行app.js,你将得到以下输出。
node app.js
  • 你也可以从另一个SSH终端使用curl来查看确切的输出。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

配置NGINX的步骤:

  • 您可以使用以下命令验证nginx的安装情况。
sudo apt-get install -y nginx

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 一旦安装完成,NGINX服务将自动启动,您可以在浏览器中访问实例的外部IP。如果您看到下面的输出,表示服务器已成功启动,我们可以继续设置HTTPS。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

在NGINX上设置HTTPS :

  • 运行以下命令创建一个新的自签名证书。如果你想使用由机构签名的证书,也可以这样做。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx.key -out /etc/ssl/certs/nginx.crt 
  • 填写关于你的组织的信息,并将域名放在公共名字的位置。如果你没有域名,你可以将实例的外部IP放在那里。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 现在我们将创建一个Diffie Hellman组。运行以下命令,可能需要一个小时才能完成。
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
  • 完成上述命令后,我们可以更新 NGINX 文件以使用我们的证书。在目录 /etc/nginx/snippets/ 下创建一个配置文件(self-signed.conf),并将以下行放入其中。如果您使用其他证书,请更新以下内容。
ssl_certificate /etc/ssl/certs/nginx.crt;   
ssl_certificate_key /etc/ssl/private/nginx.key; 

ssl_protocols TLSv1.2;   
ssl_prefer_server_ciphers on;   
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;   
ssl_session_timeout 10m;   
ssl_session_cache shared:SSL:10m;   
ssl_session_tickets off;   
ssl_stapling on;   
ssl_stapling_verify on;   
resolver 8.8.8.8 8.8.4.4 valid=300s;   
resolver_timeout 5s;   
add_header X-Frame-Options DENY;   
add_header X-Content-Type-Options nosniff;   
add_header X-XSS-Protection “1; mode=block”;   
ssl_dhparam /etc/nginx/dhparam.pem;   
ssl_ecdh_curve secp384r1; 
  • 现在更新站点的配置文件,位于目录 /etc/nginx/sites-available 下。在本教程中,我们将更新默认文件。如果您想要创建自己的文件,也可以。如果您使用外部 IP 作为域名,请按照以下内容更新文件。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 如果您使用的是域名,请参考下面的代码片段进行更新。
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    include snippets/self-signed.conf;

    server_name example.com www.example.com;
    ...
}
  • 现在,NGINX服务器已准备好提供HTTPS流量。

在NGINX上设置反向代理:

  • 在与上面相同的配置文件中,在位置设置中,将代理传递设置为运行在3000端口的本地NodeJS服务器。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 现在所有的配置都完成了。最后,重启NGINX来开始使用新的配置。运行以下命令。
sudo service nginx restart
  • 现在打开浏览器,使用外部IP地址或您的域名,前面加上 https:// ,您可能会看到以下屏幕。但不用担心,这是因为我们使用的是自签名证书。要继续,请点击”高级”,然后点击”继续前往不安全连接”。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

  • 一旦你进行下一步,你应该在浏览器中看到我们的Hello World应用程序。如果你遇到了 502错误 ,请确保NodeJS服务器在 3000端口 上正确运行。因此,我们已经在GCE上设置了一个带有HTTPS的NodeJS服务器。

如何在Google Compute Engine中配置Node.js服务器的HTTPS

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程