当前位置:首页 > 行业动态 > 正文

如何配置Nginx与Node.js运行环境的SSL加密?

要配置Nginx SSL和Node.js运行环境,请按照以下步骤操作:,,1. 安装Nginx和OpenSSL。,2. 生成SSL证书和私钥。,3. 配置Nginx以使用 SSL证书。,4. 部署Node.js应用。,5. 配置Nginx反向代理到Node.js应用。

安装Nginx

假设您已经在服务器上安装了Node.js,下面将介绍如何在不同操作系统下安装Nginx。

在Mac系统上安装Nginx

1、使用chown命令获取访问/usr/local文件夹的权限:

“`bash

sudo chown R ‘username here’ /usr/local

“`

2、接下来两行命令可以安装Nginx:

“`bash

brew link pcre

brew install nginx

“`

3、Nginx安装完毕后,可以使用以下命令启动Nginx:

“`bash

sudo nginx

“`

4、最后可以在目录/usr/local/etc/nginx/nginx.conf下看到Nginx的配置文件。

在Ubuntu上安装Nginx

1、使用以下命令更新软件包列表并安装Nginx:

“`bash

sudo aptget update

sudo aptget install nginx

“`

2、Nginx安装完成后便可自动启动。

在Windows下安装Nginx

1、Windows版本的Nginx可以从这里下载。

2、解压安装包到指定目录下,在cmd命令工具下运行以下代码:

“`bash

unzip nginx1.3.13.zip

cd nginx1.3.13

start nginx

“`

配置Node.js服务器

首先来创建一个简单的Node.js服务器,您可以在这里下载Express版本的Node.js,下载源代码后,将其解压至demoApp文件夹下,并且输入以下命令让服务器在3000端口上启动:

npm install
node bin/www 1

配置Nginx

现在我们已经安装完Nginx,接下来该配置服务器了。

1、打开Nginx配置文件,如果您是Mac用户,可以使用nano编辑器:

“`bash

nano /usr/local/etc/nginx/nginx.conf

“`

2、在文件中找到server配置节点,类似下面的代码:

“`bash

server {

listen 8080;

server_name localhost;

more config goes here

}

“`

3、对server节点作一些符合自己需求的配置,例如把网站中的静态文件请求交给Nginx处理,其他的文件请求则交给Node.js后端服务器,我们将用下面的代码替换上面的server配置节点:

“`bash

server {

listen 8080;

server_name localhost;

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;

}

location /public {

root /usr/local/var/www;

}

}

“`

4、修改完配置文件后,需要重启Nginx:

Mac:sudo nginx s stop && sudo nginx

Ubuntu:sudo service nginx restart 或者sudo /etc/init.d/nginx restart

Windows:nginx s reload

创建SSL证书

为了保护敏感信息,您可能需要创建SSL来加密数据传输,这里有两种方法:从证书颁发机构申请证书或创建自签名证书,对于本地测试,自签名证书已经足够,以下是创建自签名证书的步骤:

1、生成私钥:

“`bash

openssl genrsa out server.key 2048

“`

2、生成证书签名请求(CSR):

“`bash

openssl req new key server.key out server.csr

“`

3、使用私钥和CSR生成自签名证书:

“`bash

openssl x509 req days 365 in server.csr signkey server.key out server.crt

“`

4、将生成的server.key和server.crt文件放在Nginx的ssl目录下,如/etc/nginx/ssl。

5、修改Nginx配置文件以启用SSL:

“`bash

server {

listen 8080;

listen 443 ssl;

server_name localhost;

ssl_certificate /etc/nginx/ssl/server.crt;

ssl_certificate_key /etc/nginx/ssl/server.key;

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;

}

location /public {

root /usr/local/var/www;

}

}

“`

6、重启Nginx以应用更改。

相关问答FAQs

Q1: 如果Nginx无法启动怎么办?

A1: 如果Nginx无法启动,请检查Nginx配置文件中是否有语法错误,您可以使用以下命令检查配置文件的正确性:sudo nginx t,如果发现错误,请根据提示信息进行修正,确保没有其他进程占用Nginx所需的端口。

Q2: SSL证书是否必须在生产环境中使用?

A2: 是的,建议在生产环境中使用由可信任的证书颁发机构签发的SSL证书,以确保数据传输的安全性和浏览器的信任,虽然自签名证书可以用于开发和测试环境,但它们不会被公共浏览器信任,因此不适用于生产环境。

Nginx SSL 与 Node.js 运行环境配置教程

目录

1、引言

2、环境准备

3、Nginx SSL 配置

4、Node.js 应用部署

5、集成与测试

6、安全最佳实践

7、归纳

1. 引言

本文将指导您如何在基于 Linux 的服务器上配置 Nginx SSL 以提供安全的 HTTPS 服务,并将 Node.js 应用部署到该环境中。

2. 环境准备

系统要求

操作系统:Linux(推荐使用 Ubuntu 20.04 或 CentOS 7)

Nginx:版本 1.17 或更高

Node.js:版本 14 或更高

OpenSSL:版本 1.1.1 或更高

安装步骤

1、更新系统包列表:

sudo apt update
sudo apt upgrade

2、安装 Nginx:

sudo apt install nginx

3、安装 Node.js:

sudo apt install nodejs npm

4、安装 OpenSSL:

sudo apt install openssl

3. Nginx SSL 配置

1、生成 SSL 证书和私钥(这里使用 Let’s Encrypt 自动续期):

sudo certbot noninteractive agreetos autorenew registerunsafelywithoutemail dnscloudflare dnscloudflarecredentials /path/to/cloudflare/credentials.yaml

2、配置 Nginx:

编辑 Nginx 的 SSL 配置文件,通常位于/etc/nginx/sitesavailable/your_domain

server {
    listen 443 ssl;
    server_name your_domain.com www.your_domain.com;
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHEECDSAAES128GCMSHA256:ECDHERSAAES128GCMSHA256...';
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://localhost:3000; # Node.js 应用监听的端口
        proxy_set_header Host $host;
        proxy_set_header XRealIP $remote_addr;
        proxy_set_header XForwardedFor $proxy_add_x_forwarded_for;
        proxy_set_header XForwardedProto $scheme;
    }
}

3、创建符号链接到 Nginx 的 sitesenabled 文件夹:

sudo ln s /etc/nginx/sitesavailable/your_domain /etc/nginx/sitesenabled/

4、重启 Nginx 以应用更改:

sudo systemctl restart nginx

4. Node.js 应用部署

1、创建 Node.js 应用:

mkdir myapp
cd myapp
npm init y

2、安装依赖:

npm install express

3、创建一个简单的 Express 应用:

// app.js
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
  res.send('Hello, world!');
});
app.listen(port, () => {
  console.log(Server running at http://localhost:${port}/);
});

4、启动 Node.js 应用:

node app.js

5. 集成与测试

1、在浏览器中输入您的域名,应看到 Node.js 应用的响应。

2、使用 SSL 工具(如 SSL Labs 的 SSL Test)检查 SSL 配置。

6. 安全最佳实践

使用 HTTPS 严格传输安全(HSTS)。

定期更新 Nginx 和 Node.js。

使用强密码策略。

限制不必要的端口访问。

7. 归纳

您现在应该有一个配置好的 Nginx 服务器,它通过 SSL 为您的 Node.js 应用提供服务,请确保遵循安全最佳实践,以保护您的网站和数据。

0