成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

OpenResty安裝、配置與使用

stackfing / 3014人閱讀

摘要:用于方便地搭建能夠處理超高并發(fā)擴展性極高的動態(tài)應(yīng)用服務(wù)和動態(tài)網(wǎng)關(guān)。安裝安裝依賴庫下載及安裝激活組件被用于構(gòu)建。大部組件默認是激活的,也有部件不是。您需要通過以下選項在編譯的時候?qū)⑺鼈兏髯约せ睿汀?/p>

OpenResty簡介

OpenResty 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項。用于方便地搭建能夠處理超高并發(fā)、擴展性極高的動態(tài) Web 應(yīng)用、Web 服務(wù)和動態(tài)網(wǎng)關(guān)。

Lua簡介

Lua是一個簡潔、輕量、可擴展的程序設(shè)計語言,其設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴展和定制功能。Lua由標準C編寫而成,代碼簡潔優(yōu)美,幾乎在所有操作系統(tǒng)和平臺上都可以編譯,運行。

OpenResty安裝

1.安裝依賴庫

yum install readline-devel pcre-devel openssl-devel gcc

2.下載及安裝OpenResty

wget https://openresty.org/download/openresty-1.9.15.1.tar.gz
tar xvf openresty-1.9.15.1.tar.gz
cd openresty-1.9.15.1
./configure --with-luajit && make && make install

激活LuaJIT

組件被用于構(gòu)建 OpenResty。所有的組件可以被激活或禁止。 大部組件默認是激活的,也有部件不是。 LuaJIT、 DrizzleNginxModule、PostgresNginxModule和IconvNginxModule 默認是沒有激活的。您需要通過以下選項在編譯 OpenResty的時候?qū)⑺鼈兏髯约せ睿?--with-luajit、 --with-http_drizzle_module、 --with-http_postgres_module和 --with-http_iconv_module 。

安裝好的OpenResty

從上圖可以看到,openresty在/usr/local目錄下

OpenResty啟動

通過下述方式啟動Nginx。如果沒有任何輸出,說明啟動成功,-p 指定我們的項目目錄,-c 指定配置文件。

/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
/usr/local/openresty/nginx/sbin/nginx -p "pwd" -c /usr/local/openresty/nginx/conf/nginx.conf

為openresty下的nginx建立軟鏈(非必需)

ln -s /usr/local/openresty/nginx/sbin/nginx  /usr/sbin/nginx

則可使用如下方式啟動

/usr/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf

在瀏覽器中訪問:

OpenResty配置Lua

由于原生的Nginx日志沒有resp_body這一選項,通過在nginx.conf中添加Lua腳本的方式定義resp_body。

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  "$remote_addr - $remote_user [$time_local] "$request" "
                      "$status $body_bytes_sent "$http_referer" "
                      ""$http_user_agent" "$http_x_forwarded_for"";

    log_format log_resp_body  "$remote_addr - $remote_user [$time_local] "$request" "
                      "$status $body_bytes_sent "$http_referer" "
                      ""$http_user_agent" "$http_x_forwarded_for" "
                      "$request_time $bytes_sent $request_length "$request_body" "$resp_body"";

    access_log  logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        access_log  logs/access.index.log  log_resp_body;

        lua_need_request_body on;

        set $resp_body "";

        body_filter_by_lua "
            local resp_body = string.sub(ngx.arg[1], 1, 1000)
            ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
            if ngx.arg[2] then
                ngx.var.resp_body = ngx.ctx.buffered
            end
        ";

        location / {
            root   html;
            index  index.html index.htm;
        }

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

檢測Nginx配置是否正確

/usr/sbin/nginx -t

重啟Nginx

/usr/sbin/nginx -s reload

驗證Lua配置是否成功

tail -f access.log

tail -f access.index.log

參考資料:

OpenResty
OpenResty中文站
nginx-lua
lua-nginx-module

20160615更正:

實踐證明,上面body_filter_by_lua中的代碼存在bug,可通過如下方式更正:

body_filter_by_lua "
    local maxlen = 1000
    ngx.ctx.buffered = ngx.ctx.buffered or ""
    if #ngx.ctx.buffered < maxlen then
        ngx.ctx.buffered = ngx.ctx.buffered .. string.sub(ngx.arg[1], 1, maxlen - #ngx.ctx.buffered)
    end
    if ngx.arg[2] then
        ngx.var.resp_body = ngx.ctx.buffered
    end
";

感謝OpenResty 中文郵件列表

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39303.html

相關(guān)文章

  • (學習到實踐)六、docker自定義nginx/openresty

    摘要:但官方?jīng)]有發(fā)布相關(guān)東西,所以以結(jié)合安裝參考官方的為原則編寫。運行測試運行成功,大小,太大了感覺,提交到云端。啟動官方鏡像提交到云端,偶然想搜索下有沒有,竟然反問有官方鏡像,了個下來,還不錯。 前言 為什么要使用openresty? 官方說明:OpenResty? 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項...

    BingqiChen 評論0 收藏0
  • 日志平臺(網(wǎng)關(guān)層) - 基于Openresty+ELKF+Kafka

    摘要:現(xiàn)在用方式調(diào)用接口,中使用方式輸入內(nèi)容日志平臺網(wǎng)關(guān)層基于。日志平臺網(wǎng)關(guān)層基于到此為止,提取經(jīng)過網(wǎng)關(guān)的接口信息,并將其寫入日志文件就完成了,所有的接口日志都寫入了文件中。 背景介紹 1、問題現(xiàn)狀與嘗試 沒有做日志記錄的線上系統(tǒng),絕對是給系統(tǒng)運維人員留下的坑。尤其是前后端分離的項目,后端的接口日志可以解決對接、測試和運維時的很多問題。之前項目上發(fā)布的接口都是通過Oracle Service...

    xumenger 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<