使用 javascript 配置 nginx

來源:互聯網
上載者:User

標籤:

使用 javascript 配置 nginx

在上個月的 nginx.conf 2015 大會上, 官方宣布已經支援通過 javascript 代碼來配置 nginx,並把這個實現稱命名為——nginscript。使用 nginscript,可以很輕易得在 niginx 設定檔中通過 js 文法來實現自訂的伺服器配置。

安裝
# 下載最新版本的 nginx 並解壓curl -O http://nginx.org/download/nginx-1.9.5.tar.gztar -xzvf nginx-1.9.5.tar.gz# 下載 nginscript 模組並解壓curl -O http://hg.nginx.org/njs/archive/tip.tar.gztar -xzvf tip.tar.gz# 編譯並安裝 nginx$ cd nginx-1.9.5$ ./configure --add-module=剛才解壓的nginscript目錄$ make$ make install
在 nignx.conf 中使用 nginscript定義變數

使用 js_set 指令可以通過 javascript 代碼來定義一個變數:

js_set $msg "   var m = ‘Hello ‘;   m += ‘world!‘;   m;";

這些變數可以被其他的 nginx 指令使用:

location /hello {    add_header Content-Type text/plain;    return 200 $msg;}
執行 javascript 程式碼片段

使用 js_run 指令可以執行指定的 javacript 代碼:

location /hello {    js_run "        var res;        res = $r.response;        res.contentType = ‘text/plain‘;        res.status = 200;        res.sendHeader();        res.send( ‘Hello, world!‘ );        res.finish();    ";}
請求對象

在 javascript 代碼中可以通過 $r 變數來擷取到請求對象,請求方相關資訊都會儲存在這個變數上:

js_set $summary "    var a, s, h;    s = ‘Request summary\n\n‘;    s += ‘Method: ‘ + $r.method + ‘\n‘;    s += ‘HTTP version: ‘ + $r.httpVersion + ‘\n‘;    s += ‘Host: ‘ + $r.headers.host + ‘\n‘;    s += ‘Remote Address: ‘ + $r.remoteAddress + ‘\n‘;    s += ‘URI: ‘ + $r.uri + ‘\n‘;    s += ‘Headers:\n‘;    for (h in $r.headers) {        s += ‘  header \"‘ + h + ‘\" is \"‘ + $r.headers[h] + ‘\"\n‘;    }    s += ‘Args:\n‘;    for (a in $r.args) {        s += ‘  arg \"‘ + a + ‘\" is \"‘ + $r.args[a] + ‘\"\n‘;    }    s;";
response 響應對象

在 javascript 代碼中可以通過 $r.response 來擷取到響應對象,用於設定響應內容:

js_run "    var res = $r.response;    res.contentType = ‘text/plain‘;    res.status = 200;    res.sendHeader();    res.send( ‘Hello, world!‘ );    res.finish();";
nginscript 與 javascript 的區別

nginscript 不是完整的 javascript,它只是是實現了一個 ECMAScript 的一個子集, 為了追求效率, 許多 javascript 的內建對象在 nginscript 中並沒有實現。我嘗試使用了一下 Date、JSON 等對象,都還沒有實現。

這便是幾乎所有的 nginscript 知識,雖然沒有實現完整的 EMCAScript 規範,但是對於配置 nginx 來說,個人感覺也夠用了。

使用 javascript 配置 nginx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.