如何配置Nginx与Node.js运行环境的SSL加密?
- 行业动态
- 2024-10-06
- 1
安装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 应用提供服务,请确保遵循安全最佳实践,以保护您的网站和数据。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/116527.html