开yun体育app官网网页登录入口 nginx添加njs(又名nginScript )模块

发布于:25-06-22 播放次数:

阿里的一名程序员在nginx服务器环境中开发了一个基于LuaJit的nginx插件模块,此模块使得在nginx中运用lua脚本执行各类http钩子操作成为现实。该程序员不断推动该插件的发展,使其逐渐演变成一个由nginx和lua构建的上层平台,即openresty。openresty功能强大、性能卓越,已被京东、淘宝等众多企业所采用。此平台特别适宜作为API服务、WAF服务以及CDN服务的支撑。不知是否受到这一平台的启发,nginx官方推出了nginScript。这是一种在nginx运行环境中运行的javascript编程语言,它是javascript的一个子集,并拥有自己更为简洁的虚拟机。通过这种方式,nginScript为控制nginx提供了更加灵活的编程方式。

在默认配置中,nginx并未集成njs模块,因此需要单独进行安装。本文将重点阐述如何从源代码进行模块的安装过程。

一、下载nginx源码,本文使用的版本是1.16.1

解压在目录~/nginx-1.16.1

在下载njs源码之前,必须先安装一个类似于git的版本控制软件——mercurial,具体操作为:执行命令“yum install mercurial”。

三、进入到nginx源码目录进行编译安装

cd nginx-1.16.1

执行./configure命令,指定安装路径为/usr/local/nginxkaiyun.ccm,同时启用以下模块:HTTP SSL模块、HTTP v2模块、HTTP真实IP模块、HTTP附加模块、HTTP图像过滤模块、HTTP子模块、HTTP解压模块、HTTP静态文件压缩模块、HTTP认证请求模块、HTTP切片模块、HTTP状态模块。此外,还启用了邮件功能、邮件SSL模块、流功能、流SSL模块、流真实IP模块和流SSL预读模块。同时,使用了PCRE库,并添加了位于../njs/nginx目录下的nginx模块。

关键在于添加模块开yun体育app官网网页登录入口,具体为 --add-module=../njs/nginx,确保模块路径准确无误,而其他配置则需根据个人实际情况进行调整。

make && make install

四、编写njs脚本进行测试

在位于/usr/local/nginx/conf的文件夹中云开·全站体育app登录,我创建了一个名为hello_world.js的脚本文件(出于验证的便捷性,并未指定到其他目录),该脚本的内容如下:

function hello(r){

r.return(200, "Hello world");

保存退出。

编辑nginx.conf文件,添加如下配置:

http {

执行了js_include命令,将hello_world.js文件包含进来;#已添加。

include       mime.types;

默认类型为应用/八进制流格式;

sendfile        on;

#tcp_nopush     on;

#keepalive_timeout  0;

keepalive_timeout  65;

#gzip  on;

server {

listen       80;

server_name  localhost;

#charset koi8-r;

禁止对访问日志进行修改,应将日志信息记录至“host.access.log”文件中,并采用“main”模式进行处理。

location / {

js_content hello; //Added

...

保存退出。

执行指令以激活nginx服务:请输入路径/usr/local/nginx/sbin下的nginx命令。

测试:curl -i localhost

可以看到输出了Hello world.

说明安装成功。

请留意,网络上有部分资料提到,在配置nginx.conf文件时,需要添加以下模块加载指令:将“ngx_http_js_module.so”模块从“modules”目录加载进来。

可能是某些nginx历史版本才需要,请读者自行判别。

参考:

官方提供的安装步骤中包含了njs命令行交互工具的介绍,这使得测试njs变得更加便捷。

访问https://nginx.org/en/docs/njs,即可查看官方提供的示例。

不得对专利内容进行擅自修改,且必须严格遵守相关规定,确保信息的准确无误。