百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx 这个赛道还是被 JavaScript 闯进来了

off999 2025-01-26 23:49 28 浏览 0 评论

曾经,用JavaScript,你可以让按钮动起来,现在用 JavaScript,你可以让整个互联网运转起来。

这句话虽然是调侃,但多少也反应了一些事实,最开始JavaScript 就是纯纯的脚本语言,只为工作在浏览器上,配合 HTML和 CSS 的,后来地位越来越重要,网站的动效和交互都要依靠它来完成。

再之后,NodeJS 横空出世,使JavaScript变成了全栈语言。从此,JavaScript 成了唯一一种能同时让前端浏览器和后端服务器崩溃的语言。

JavaScript 从纯前端语言向后端跨了一小步,这是 JavaScript 的一小步,却是前端开发者的一大步,从此前端开发者全都轻轻松松变成了全栈开发,从此前后端一把梭,独立开发信手拈来,作为后端开发,只能咬牙切齿拍大腿:“早知道当初学前端了,失业了还能搞独立开发”。

当然,JavaScript 不光涉及浏览器和服务器,还涉及PC客户端和移动客户端,我之前写的独立开发者都用什么框架开发客户端产品(PC客户端篇)和独立开发者都用什么框架开发移动端产品这两篇文章里,介绍了几种跨平台的开发框架,其中PC端 Electron 、Tauri 以及移动端React Native、UniApp都使用 JavaScript 实现的。你就说它强不强吧。

设想一下,假设哪天世界上的 JavaScript 突然神奇的都不工作了,那会有多少网站、应用崩溃。

如果到这儿就结束了,那就太单纯了。

相信各位大多数都知道 Nginx 是支持动态模块的,比如 HTTPS 模块、SSL 模块等,就想插件一样,添加某个插件就能支持一些功能,大部分模块都是用 C 语言实现的。除了 C 语言外,Nginx 支持的最好的应该就是 Lua 模块了。

这不,JavaScript 也挤进来了,最近 Nginx 正式推出了 JavaScript 动态模块 NJS。

NJS 全称NGINX JavaScript,是 NGINX 的一个动态模块,支持使用熟悉的 JavaScript 语法扩展内置功能。NJS 语言是 JavaScript 的子集,与 ES5 (ECMAScript 5.1 Strict Variant) 兼容,并带有一些 ES6 (ECMAScript 6) 和更新的扩展。

官网地址: github.com/nginx/njs

按照 NJS 模块后,Nginx 就支持用JavaScript语法来实现一些规则了,比如鉴权、日志、动态代理等,也就是以前用 Lua 实现的功能,可以用大多数人更熟悉的 JavaScript 语法来实现了。

安装和使用

假设你使用的是 Ubuntu 服务器,使用下面的命令安装 NJS 模块。

sudo apt install nginx-module-njs

然后打开 Nginx 配置文件

sudo vim /etc/nginx/nginx.conf

在其中启用 NJS 模块

 load_module modules/ngx_http_js_module.so;

之后,就可以动手写 JavaScript 文件了,假设在 /etc/nginx/njs目录下,创建一个 hello.js

function hello(r) {
  r.return(200, "Hello world!\n");
}

export default {hello}

是不是一下就到了熟悉的领域了,从此 Nginx 都变得眉清目秀了。

再来 nginx.conf改一下配置

# 加载 NJS 模块
load_module modules/ngx_http_js_module.so;

events {}

http {
  # 设置 js 文件目录
  js_path "/etc/nginx/njs/";

  # 导入js文件到 main 变量中
  js_import main from http/hello.js;

  server {
    listen 80;

    location / {
      # 当接到请求后,返回mian.hello 函数,也就是 hello.js 中的hello方法
      js_content main.hello;
    }
  }
}

之后 reload 一下nginx,再次请求 http://127.0.0.1的时候,就会返回Hello World了。

更多的使用示例可以参考 github.com/nginx/njs-e… ,包括权限处理、日志处理、代理转发、重定向等都在里面。

说实话,以前自己配置 Nginx 的话,能简单就简单着来,还真没想过在 Nginx 中搞什么,宁愿在应用服务中做,现在用 NJS 的话,感觉也不是不可以了,毕竟在 Nginx 端处理一些东西效果和性能上要更好一些。

学习交流

最后,把我的座右铭送给你:投资自己才是最大的财富。 如果你觉得本文章对你有帮助,点赞,收藏不迷路

关注公众号:我不是架构师,持续为你输出更多的硬核文章和面试经验。

相关推荐

卸载内置软件app(卸载内置应用软件)
  • 卸载内置软件app(卸载内置应用软件)
  • 卸载内置软件app(卸载内置应用软件)
  • 卸载内置软件app(卸载内置应用软件)
  • 卸载内置软件app(卸载内置应用软件)
分区助手怎么用给c盘扩容(分区助手如何扩大c盘容量)

360分区助手扩大c盘的方法如下1、下载分区助手软件,安装一定要安装到C盘,安装在其他盘内不可用。折腾还得安装回来,安装后打开软件,选择主页面左侧“扩展分区向导”。2、直接点击“下一步”,默认选择扩...

u盘不显示文件夹(u盘不显示文件夹但是有内存)

如果您的U盘不显示文件夹,可能是由于文件夹被隐藏或损坏造成的。您可以通过以下方法解决此问题:首先,打开文件管理器,点击"查看"选项卡,勾选"隐藏文件",然后查看U盘根目...

电脑自带磁盘分区工具(磁盘分区工具在哪里)

1、右击我的电脑,选择“管理”。2、接着,在计算机管理界面选择“存储——磁盘管理”3、接着系统会自动的查询压缩空间,然后选择选择好需要压缩空间的大小。接着点击“压缩”4、等待系统自动将磁盘空间压...

win10激活密钥永久(win10激活密钥永久正版企业版最新)

要获得Windows10专业版永久激活密钥,可以通过微软官方零售渠道或可靠的第三方卖家购买正版产品密钥。使用第三方卖家时,务必注意其信誉和真实性。激活后,密钥将与您的Microsoft帐户关...

wlan不可上网怎么办(wlan显示不可上网怎么回事)

当wlan不能上网时,可以尝试以下解决方案:1.检查路由器或无线网络设备是否正常运作,确保其连接和配置正确。2.检查电脑或移动设备是否连接到正确的无线网络,并确保输入正确的密码。3.尝试重新启动...

ip地址是什么(腾达路由器的ip地址是什么)

IP地址:IP是英文InternetProtocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。我们可以把ip地址类比成电话号码。扫地[sǎodì]&...

win10 1703版本(window10 1703版本)

windows的版本是这样排序的:17为2017年,03为3月,所以此版本为2017年3月更新的版本。微软加入了不少新的功能:增强了Edge浏览器的稳定性。额外的安全和隐私保护。游戏模式更加稳定。日历...

tplink路由器用户名(tplink路由器用户名和密码)

tp-link无线路由器的WiFi默认为TP-LINK_XXXX(XXXX为4位英文和数字组合)。查看tp-link无线路由器ID的方法如下:1、打开电脑浏览器,在地址栏中输入“192.168.0.1...

如何安装windows10家庭版(如何安装windows 10家庭版)

Windows10家庭版可以安装鲁大师。鲁大师是一款软件,可以用于检测电脑的系统效果和状态。然而,有人认为鲁大师被360收购后出现了很多问题,如难卸载、弹窗不断等。因此,是否需要安装鲁大师,还需要根据...

虚拟机安装win7镜像(虚拟机安装win7镜像软件)

下载VMware虚拟机win7映像文件,您可以选择官方或授权的渠道进行操作。首先,您需要确认需要下载的虚拟机镜像的操作系统和版本。通常,官方提供了一些预定义的虚拟机镜像,如Windows7等。一种可...

cpu温度过高会怎样(cpu温度过高会造成什么影响)

CPU温度过高会导致一系列问题,包括但不限于以下几个方面:1.电脑运行不稳定:CPU温度过高会导致电脑运行不稳定,程序崩溃、电脑反应缓慢等问题。2.电脑硬件损坏:CPU温度过高容易导致电脑硬件损坏...

win7进安全模式(win7进安全模式卡死)

1、重启或开机时,在进入Windows系统启动画面之前按下F8键,会出现系统多操作启动菜单,有三个版本的安全模式可以选择,回车就直接进入安全模式。2、重启电脑时,按住Ctrl键不放,会出现系统多操作启...

360手机助手下载的软件在哪里

在手机中打开安装好的360手机应用助手然后在360手机应用助手界面的右下角,选择“更多”,然后在这里再进入“设置”进入设置后,再选择“应用安装位置”设置最后我们选择SD卡即可根据以上步骤,就可以修改下...

组策略管理器怎么打开(组策略管理器怎么打开控制面板)

1.找不到2.本地组策略管理器可能找不到是因为它可能被禁用或者被删除了。另外,也有可能是因为你的操作系统版本不支持本地组策略管理器。3.如果你的操作系统版本不支持本地组策略管理器,你可以尝试使用...

取消回复欢迎 发表评论: