您要使用“Node.js配置NGINX和SSL”的知识点都在这里了 - Web前端
作者:98wpeu发布时间:2026-09-14分类:网页前端技术浏览:6
Nginx是高性能http服务器,也是反向代理。与传统服务器不同,nginx遵循事件驱动的异步体系结构。结果,内存占用量低,性能高。如果您正在运行基于node.js的WEB应用程序,则应认真考虑将NGINX用作反向代理。
NGINX在提供静态资产方面非常有效。对于所有其他请求,它将与您的Node.js后端进行对话,并将响应发送给客户端。在本教程中,我们将讨论如何配置NGINX以与node.JS一起使用。我们还将看到如何在NGINX服务器中设置ssl。
注意:Node还具有内置的https模块,可以配置为读取必需的证书文件,而无需反向代理。您可以在我们的文章如何在Node.js中使用SSL / TLS中找到有关此内容的更多信息。
安装NGINX
假设您已经在计算机上安装了Node.js,让我们看看如何安装NGINX。
在linux上安装
如果您正在运行Ubuntu,则可以使用以下命令来安装NGINX:
Sudo apt-get updatesudo apt-get install nginx
如果您正在运行Ubuntu以外的Linux发行版,请查看NGINX安装文档【https://docs.nginx.com/nginx/admin-gUIde/installing-nginx/installing-nginx-open-source/#PRebuilt】以获取更多信息。
NGINX一旦安装,将自动启动。
在macOS上安装
如果您使用的是MacOS,则可以使用Homebrew轻松安装NGINX。步骤如下:
-
Homebrew需要将目录
/usr/local添加chown到您的用户名。因此,请首先在终端中运行以下命令:sudo chown -R 'Username here' /usr/local
-
现在,以下两个命令将在您的系统上安装NGINX:
brew link PCre brew install nginx
-
安装完成后,您可以键入以下命令来启动NGINX:
sudo nginx
-
NGINX配置文件可以在这里找到:
/usr/local/etc/nginx/nginx.conf。
在windows上安装
对于Windows,请转到NGINX 下载 页面并获取zip。下一步是解压缩归档文件,并在命令提示符下移动到目录,如下所示:
unzip nginx-1.3.13.zipcd nginx-1.3.13 start nginx
如您所见,该命令start nginx将启动NGINX。
现在安装已完成,让我们看看如何配置简单服务器。
设置Node.js服务器
首先,让我们创建一个简单的Node.js服务器。我们将首先启动一个项目并安装Express软件包:
mkdir node-demo && cd node-demonpm init -ynpm i express
创建一个名为的文件server.js,其中包含以下内容:
const express = require('express')const APP = express()const port = 3000app.get('/', (req, res) => res.send('Hello World!'))App.listen(port, () => console.log(`Example app listening on port ${port}!`))
您可以通过运行启动服务器node server.js。
配置NGINX
现在让我们打开NGINX的默认站点配置文件:
sudo nano /etc/nginx/sites-avAIlable/default
如果需要,可以直接转到目录并使用您喜欢的文本编辑器打开配置文件。
向下滚动时,会发现一个server块。看起来像这样:
server {
listen 80;
server_name localhost;
....
more config goes here
}
接下来,我们将配置server块以适合我们的需求。我们想要配置NGINX以便将所有请求传递到我们的Node.js服务器。server如下所示,用新的块替换上面的块:
server {
listen 80;
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;
}
}
如您所见,Web服务器将在http://localhostport上侦听80。该location /块告诉NGINX如何处理任何传入请求。我们proxy_pass通常指向Node.js应用程序,http://localhost:3000在本例中该应用程序正在运行。
此时,您应该保存文件并键入以下内容以重新启动NGINX,具体取决于您的操作系统。
Ubuntu:
sudo service nginx restart
要么:
sudo /etc/init.d/nginx restart
苹果系统:
sudo nginx -s stop && sudo nginx
视窗:
nginx -s reload
完成此操作后,您可以转到http:// localhost以查看我们的代理正在运行。尽管您正在访问NGINX Web服务器,但是将从Node.js服务器获得实际响应。
注意:您需要确保端口80上没有其他任何东西(例如Apache)运行。
设定SSL
为了与用户的浏览器建立安全连接,我们需要获取数字证书。通常,您是从诸如let's Encrypt之类的证书颁发机构获得的。如果您使用“让我们加密”路线,请确保使用Certbot安装证书,这将为您重新配置NGINX。
对于本地开发(以及本教程的后续操作),您还可以创建一个自签名证书。唯一的问题是,当有人访问您的网站时,浏览器将显示警告“证书不可信”。但是对于在本地计算机上进行测试来说,这是完全可以的。
获得证书和私钥后,即可在NGINX中设置SSL。您需要将我们之前的服务器块修改为以下内容:
server {
listen 80;
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;
}
}
而已!
现在,如果您访问 HTTPS:// localhost,则您的连接将是安全的。上面的配置假定证书和私钥分别位于/etc/nginx/ssl/server.crt和/etc/nginx/ssl/server.key,但是您可以根据需要更改这些位置。
服务静态资源
在Node.js服务器之前设置NGINX的另一个好处是,我们可以轻松地对其进行配置,以提供应用程序所需的任何静态资产。这将节省通过这些请求供Node处理的开销。
为此,我们需要location在服务器配置中添加一个新块:
server {
listen 80;
server_name localhost;
location / {
...
}
location /public {
root /usr/local/var/www;
}
}
在此location块中,我们将根目录设置为/usr/local/var/www,但您可以根据需要选择其他目录。结果,无论何时有类似的请求http://localhost/public/somepath/file.html,NGINX都会/usr/local/var/www/public/somepath/file.HTML直接从中提供文件。
结论
在这个简短的教程中,我们已经看到了如何将NGINX用作Node.js应用程序的反向代理并配置SSL。通过使用NGINX处理静态资源,您还可以减轻Node应用程序的负担。
下一篇文章将给大家介绍:Node.js中使用SSL / TLS。请持续关注我们,如有问题,可以留言或者加Q群讨论。
相关推荐
- 网站程序搬家在phpMyAdmin上传mysql的时候报错:#1046 - No database selected - Web前端
- 聊聊vuejs里对于API接口的处理、封装以及跨域方法应用 - Web前端
- 一种现代且支持HTML5的CSS重置替代品:Normalize.css - Web前端
- 介绍2020年6款常用且最佳免费的字体网站 - Web前端
- 聊聊如何将jQuery的$.ajax()用于异步HTTP请求 - Web前端
- 分享下css3里的2D变形方法 - Web前端
- 了解下React中标准路由库:React Router v5 - Web前端
- 带您快速深入了解CSS视口单位:vh、vw、vmin和vmax - Web前端
- 作为UX的内容:构建更人性化的Web - Web前端
- 简单说明下vue里面每个节点钩子函数的定义和应用 - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 8jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 9在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


