当前位置:首页 > 技术分析 > 正文内容

nodejs+express,搭配Nginx提高性能,以及为什么要使用Nginx?

nodejs是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHPPythonPerlRuby等服务端语言平起平坐的脚本语言

nginx作为一个具有高性能httphttps反向代理web服务器,非常适合托管静态资源文件。

通常我们使用Express框架来搭建一个nodejs web应用,这是一个非常不错的选择。现在我们通过一些例子来探讨今天的问题。


express 创建应用 基本实例

import express from "express";
const app = express();
// ... app.use、路由(app.get、app.post) 等。
// app.use(express.static("assets"));
app.get('/', (req, res) => {
  res.send('Hello World!')
})
app.listen(80, () => {
  console.log(`port:${port}`)
})


express.static 直接挂载静态文件

app.use(express.static("assets"));
// http://localhost:8080/img/logo.png
// http://localhost:8080/css/index.css


express.static 添加别名/虚拟目录 挂载静态文件

app.use("/static", express.static("assets", { setHeaders }));
// http://localhost:8080/static/img/logo.png
// http://localhost:8080/static/css/index.css


sendFile 发送静态文件

比如说在多租户架构下,一个nodejs应用同时绑定N个站点

举例:

// typescript 代码实例
sendFile(req: core.Request, res: core.Response, host_code:string) {
    const filePath = `./sites/${host_code}${decodeURIComponent(req.path)}`;
    res.sendFile(filePath, { root: path.resolve(".") }, (err) => {
        if (err) {
            // ...
        }
    });
}

在实际应用过程中,当访问量较大时,体验不是很完美。这个时候nginx登场了,完美的解决了相关问题,所以合理利用不同工具,争取做到尽善尽美,是乃毕生之所追求。


nginx 代理nodejs,并直接托管静态资源不走Nodejs

server{
   listen      80;
   server_name video.prvt.cool;
  location / {
    # ... 其它配置
    proxy_pass http://127.0.0.1:9010; 
   }
   location /css {
       alias  d://sites/web0015/assets/;
   }
}
server{
   listen      80;
   server_name music.prvt.cool;
  location / {
    # ... 其它配置 
    proxy_pass http://127.0.0.1:9010; 
   }
   location /css {
       alias  d://sites/web0017/assets/;
   }
}
server{
   listen      80;
   server_name prvt.cool www.prvt.cool;
  location / {
    # ... 其它配置
    proxy_pass http://127.0.0.1:9010; 
   }
   location /css {
       alias  d://sites/web0016/assets/;
   }
}


运行多个Node应用程序时

当您运行多个nodejs应用程序时,您希望他们都使用80端口时,这时候使用NGINX来代理,将会是一个完美的选择


人人为我,我为人人,欢迎您的浏览,我们一起加油吧。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4534.html

标签: n node
分享给朋友:

“nodejs+express,搭配Nginx提高性能,以及为什么要使用Nginx?” 的相关文章

Ubuntu 24.10发行版登场:Linux 6.11内核、GNOME 47桌面环境

IT之家 10 月 11 日消息,Canonical 昨日发布新闻稿,正式推出代号为 Oracular Oriole 的 Ubuntu 24.10 发行版。新版在内核方面升级到最新 6.11 版本,并采用 GNOME 47 桌面环境。Ubuntu 24.10 发行版调整了内核策略,开始选择最新的上游...

深入理解Vue.js组件通信:父子组件与子父组件数据交互详解

什么是Vue组件通讯 Vue.js 组件通信是指在 Vue 应用的不同组件之间进行数据交换和状态同步的过程。由于 Vue 的组件是基于单文件组件(SFCs)的模块化设计,每个组件都有自己的作用域,因此它们不能直接访问彼此的数据。为了使组件之间能够协同工作,Vue 提供了几种不同的通信方式。以下是 V...

gitlab简单搭建与应用

一、gitlab1、简介GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历...

30 个纯 HTML5 实现的游戏

浏览器和 JavaScript 的功能逐年不断的变强变大。曾几何时,任何类型的游戏都需要Flash。但随着 HTML5 发展,HTML5 + WebGL 游戏式就慢慢占领着这个舞台。以下是30款流行的游戏,它们可以在所有现代浏览器中运行,并且只使用web技术构建。1. HexGL地址:http://...

摄影后期必看 | PS插件camera raw 16.4教程 | 范围蒙版

范围蒙版Camera Raw 【蒙版】模块中提供了三个范围蒙版工具,可以通过特定的范围来创建蒙版。此次新增的【范围蒙版】大大加强了acr插件对局部调整的能力。点击下拉小箭头可以看到【颜色范围】,可用于快速选择想要编辑的颜色。快捷键:Shift + C【明亮度范围】,可用于快速选择想要调整的明亮度。快...

分享15个基于Vue3.0全家桶的优秀开源项目

大家好,我是 Echa。今天来分享 15 个基于 Vue3.0 全家桶的优秀开源项目!1. Vue Admin Bettergithub : https://github.com/chuzhixin/vue-admin-bettervue admin better 对比其他来源 admin 框架有如...