njs 5分钟快速入门

njs是作为nginx的module,可以通过2种方式安装:

  1. add-module 编译源码
  2. add-dynamic-module

本文采用add-module编译源码的方式。add-dynamic-module的方法自行百度。

下载 njs-0.4.1

官网提供的源码下载,需要通过hg来获取。hg是 Mercurial 分布式版本控制软件的客户端,国内使用较少,可以通过官网下载 Mercurial 客户端,通过如下命令下载njs源码:

hg clone http://hg.nginx.org/njs

njs源码仓库参考:http://hg.nginx.org/njs?_ga=2.60091629.1926145332.1591076203-902755521.1590558489

也可以使用git到github上下载njs的代码镜像或者release压缩包。最新的镜像直接下载master分支代码即可:

git clone https://github.com/nginx/njs.git

也可以直接下载最新的release压缩包:https://github.com/nginx/njs/releases

wget https://github.com/nginx/njs/archive/0.4.1.tar.gz

or

curl -o https://github.com/nginx/njs/archive/0.4.1.tar.gz

njs在github上的镜像:https://github.com/nginx/njs/

编译:

./configure –add-module=/Users/tail/njs/njs-0.4.1/nginx

如果要自定义安装目录,添加–prefix=/Users/tail/njs/njs

./configure –add-module=/Users/tail/njs/njs-0.4.1/nginx –prefix=/Users/tail/njs/njs

注意:

  1. add njs module的路径是njs根路径下的nginx目录,不是njs的跟目录,否则会出现./configure: error: no /Users/tail/njs/njs-0.4.1/config was found的错误提示。
  2. 编译前检查下面这些组件是否安装,不同系统安装方法不一样,请自行百度。
    • PCRE
    • OpenSSL
    • crypto
    • Zlib

安装

make install

运行启动

cd path/to/njs/sbin #cd /Users/tail/njs/njs

./nginx

验证启动

命令行查看

curl 127.0.0.1

终端看到如下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

或者浏览器中输入http://127.0.0.1/,看到Welcome to nginx!表示ok。

初试牛刀:基本的HTTP例子

例子参考官网的hello world:http://nginx.org/en/docs/njs/index.html

编写njs脚步

先编写一个hello_world.js脚步文件,其中定义hello函数,如下:

1
2
3
function hello(r) {
    r.return(200, "Hah,Hello world!");
}

配置nginx.conf

在http module中增加:js_include hello_world.js; 引入njs脚步文件。

js_include 指令是指定njs脚步文件内的njs代码来处理请求。

语法格式:js_include *file*;

在server > location module中增加 js_content hello;执行njs。

js_content指令用来执行js内容并输出,指令后面为一个njs函数。

语法格式:js_content *function* | *module.function*;

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
http {
    js_include hello_world.js;

    server {
        listen 8000;

        location / {
            js_content hello;
        }
    }
}

重载配置:

cd path/to/njs/sbin

./nginx -s reload

执行看效果:

命令行执行

curl 127.0.0.1

Hah,Hello world!

控制台输出:Hah,Hello world!