欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

高性能軟件負(fù)載OpenResty介紹和安裝使用詳解

 更新時(shí)間:2023年12月19日 10:17:04   作者:趙廣陸  
OpenResty是一個(gè)基于?Nginx?與?Lua?的高性能?Web?平臺(tái),其內(nèi)部集成了大量精良的?Lua?庫(kù)、第三方模塊以及大多數(shù)的依賴項(xiàng),這篇文章主要介紹了高性能軟件負(fù)載OpenResty介紹和安裝,需要的朋友可以參考下

1 OpenResty介紹

OpenResty是一個(gè)基于 Nginx 與 Lua 的高性能 Web 平臺(tái),其內(nèi)部集成了大量精良的 Lua 庫(kù)、第三方模塊以及大多數(shù)的依賴項(xiàng)

    用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動(dòng)態(tài) Web 應(yīng)用、Web 服務(wù)和動(dòng)態(tài)網(wǎng)關(guān)

    OpenResty通過(guò)匯聚各種設(shè)計(jì)精良的 Nginx 模塊(主要由 OpenResty 團(tuán)隊(duì)自主開發(fā)),從而將 Nginx 有效地變成一個(gè)強(qiáng)大的通用 Web 應(yīng)用平臺(tái),這樣,Web 開發(fā)人員和系統(tǒng)工程師可以使用 Lua 腳本語(yǔ)言調(diào)動(dòng) Nginx 支持的各種 C 以及 Lua 模塊,快速構(gòu)造出足以勝任 10K 乃至 1000K 以上單機(jī)并發(fā)連接的高性能 Web 應(yīng)用系統(tǒng)。

    OpenResty的目標(biāo)是讓你的Web服務(wù)直接跑在Nginx服務(wù)內(nèi)部,充分利用 Nginx 的非阻塞 I/O 模型,不僅僅對(duì) HTTP 客戶端請(qǐng)求,甚至于對(duì)遠(yuǎn)程后端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進(jìn)行一致的高性能響應(yīng)。

1.1 Nginx 的流程定義

nginx實(shí)際把請(qǐng)求處理流程劃分為了11個(gè)階段,這樣劃分的原因是將請(qǐng)求的執(zhí)行邏輯細(xì)分,各階段按照處理時(shí)機(jī)定義了清晰的執(zhí)行語(yǔ)義,開發(fā)者可以很容易分辨自己需要開發(fā)的模塊應(yīng)該定義在什么階段。

  • 當(dāng)請(qǐng)求進(jìn)入Nginx后先READ REQUEST HEADERS 讀取頭部 然后再分配由哪個(gè)指令操作
  • Identity 尋找匹配哪個(gè)Location*
  • Apply Rate Limits 是否要對(duì)該請(qǐng)求限制
  • Preform Authertication 權(quán)限驗(yàn)證
  • Generate Content 生成給用戶的響應(yīng)內(nèi)容
  • 如果配置了反向代理 那么將要和上游服務(wù)器通信 Upstream Services
  • 當(dāng)返回給用戶請(qǐng)求的時(shí)候要經(jīng)過(guò)過(guò)濾模塊 Response Filter
  • 發(fā)送給用戶的同時(shí) 記錄一個(gè)Log日志

1.1.1 流程詳解

階段描述
post-read接收到完整的http頭部后處理的階段,在uri重寫之前,一般跳過(guò)
server-rewritelocation匹配前,修改uri的階段,用于重定向,location塊外的重寫指令(多次執(zhí)行)
find-configuri尋找匹配的location塊配置項(xiàng)(多次執(zhí)行)
rewrite找到location塊后再修改uri,location級(jí)別的uri重寫階段(多次執(zhí)行)
post-rewrite防死循環(huán),跳轉(zhuǎn)到對(duì)應(yīng)階段
preaccess權(quán)限預(yù)處理
access判斷是否允許這個(gè)請(qǐng)求進(jìn)入
post-access向用戶發(fā)送拒絕服務(wù)的錯(cuò)誤碼,用來(lái)響應(yīng)上一階段的拒絕
try-files訪問(wèn)靜態(tài)文件資源
content內(nèi)容生成階段,該階段產(chǎn)生響應(yīng),并發(fā)送到客戶端
log記錄訪問(wèn)日志

1.1.2 OpenResty處理流程

由于 Nginx 把一個(gè)請(qǐng)求分成了很多階段,第三方模塊就可以根據(jù)自己的行為,掛載到不同階段處理達(dá)到目的,OpenResty 也應(yīng)用了同樣的特性

不同的階段,有不同的處理行為,這是 OpenResty 的一大特色,OpenResty 處理一個(gè)請(qǐng)求的流程參考下圖

指令描述
init_by_lua,init_by_lua_block運(yùn)行在Nginx loading-config 階段,注冊(cè)Nginx Lua全局變量,和一些預(yù)加載模塊。是Nginx master進(jìn)程在加載Nginx配置時(shí)執(zhí)行
init_worker_by_lua在Nginx starting-worker階段,即每個(gè)nginx worker啟動(dòng)時(shí)會(huì)調(diào)用,通常用來(lái)hook worker進(jìn)程,并創(chuàng)建worker進(jìn)行的計(jì)時(shí)器,用來(lái)健康檢查,或者設(shè)置熔斷記時(shí)窗口等等。
access_by_lua在access tail階段,用來(lái)對(duì)每次請(qǐng)求做訪問(wèn)控制,權(quán)限校驗(yàn)等等,能拿到很多相關(guān)變量。例如:請(qǐng)求體中的值,header中的值,可以將值添加到ngx.ctx, 在其他模塊進(jìn)行相應(yīng)的控制
balancer_by_lua通過(guò)Lua設(shè)置不同的負(fù)載均衡策略, 具體可以參考lua-resty-balancer
content_by_lua在content階段,即content handler的角色,即對(duì)于每個(gè)api請(qǐng)求進(jìn)行處理,注意不能與proxy_pass放在同一個(gè)location下
proxy_pass真正發(fā)送請(qǐng)求的一部分, 通常介于access_by_lua和log_by_lua之間
header_filter_by_lua在output-header-filter階段,通常用來(lái)重新響應(yīng)頭部,設(shè)置cookie等,也可以用來(lái)作熔斷觸發(fā)標(biāo)記
body_filter_by_lua對(duì)于響應(yīng)體的content進(jìn)行過(guò)濾處理
log_by_lua記錄日志即,記錄一下整個(gè)請(qǐng)求的耗時(shí),狀態(tài)碼等

2 Openresty安裝

2.1 yum安裝

你可以在你的 CentOS 系統(tǒng)中添加 openresty 倉(cāng)庫(kù),這樣就可以便于未來(lái)安裝或更新我們的軟件包(通過(guò) yum update 命令)

2.1.1 添加OpenResty倉(cāng)庫(kù)

運(yùn)行下面的命令就可以添加我們的倉(cāng)庫(kù):

sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

2.1.2 安裝OpenResty

然后就可以像下面這樣安裝軟件包,比如 openresty

sudo yum install openresty

2.2 源代碼編譯安裝

OpenResty插件分為自帶插件以及第三方插件,如果是自帶插件直接激活就可以,如果是第三方插件需要手動(dòng)下載插件添加進(jìn)去,這里我們以本地緩存插件安裝舉例

2.2.1 安裝編譯環(huán)境

yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel lua-devel readline-devel curl wget

2.2.2下載最新版源碼

mkdir /usr/local/openresty
wget https://openresty.org/download/openresty-1.21.4.1.tar.gz
tar -zxvf openresty-1.21.4.1.tar.gz # 解壓openresty

2.2.3下載緩存插件

緩存插件地址 下載最新版 緩存插件

mkdir /usr/local/openresty/modules&& cd /usr/local/openresty/modules
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz #解壓緩存插件

2.2.4 編譯OpenResty

選擇需要的插件啟用, –with-Components 激活組件,–without 則是禁止組件 ,–add-module是安裝第三方模塊

./configure --prefix=/usr/local/openresty --with-luajit --without-http_redis2_module --with-http_stub_status_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=/usr/local/openresty/modules/ngx_cache_purge-2.3 #配置緩存插件的源碼路徑

這里禁用了 redis組件 并且 安裝了第三方緩存組件

出現(xiàn)如下界面表示編譯成功

2.2.5 安裝OpenResty

gmake && gmake install

出現(xiàn)如下界面表示安裝成功

2.2.6 環(huán)境設(shè)置

vi /etc/profile ##加入path路徑
export PATH=$PATH:/usr/local/openresty/nginx/sbin
source /etc/profile ##生效配置

2.2.7 查看環(huán)境

nginx -v
nginx version: openresty/1.17.8.2

查看安裝的組件

nginx -V

2.3 環(huán)境配置

2.3.1 配置文件修改

基于我們上節(jié)課的內(nèi)容改造nginx.conf

x

user  root;
worker_processes  2;
error_log  logs/error.log  info;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include conf.d/*.conf;
}

2.3.2 創(chuàng)建配置目錄

創(chuàng)建配置文件目錄

mkdir /usr/local/openresty/nginx/conf/conf.d

2.3.3 創(chuàng)建Nginx配置文件

我們創(chuàng)建的conf.d目錄中創(chuàng)建一個(gè)測(cè)試的配置文件

server {
    server_name www.itcast.com;
    charset   utf-8;
    location /{
        default_type text/html;
        content_by_lua '
            ngx.say("<p>Hello, World!</p>")
            ';
    }
}

如果你熟悉 nginx 的配置,應(yīng)該對(duì)以上代碼就很熟悉。這里我們將 html 代碼直接寫在了配置文件中。

2.3.4啟動(dòng)OpenResty

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

接下來(lái)我們可以使用 curl 來(lái)測(cè)試是否能夠正常范圍

curl http://127.0.0.1/
<p>Hello, World!</p>

我們?cè)谂渲梦募懙?html 已正常輸出。

到此這篇關(guān)于高性能軟件負(fù)載OpenResty介紹和安裝的文章就介紹到這了,更多相關(guān)OpenResty介紹和安裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx和Apache幾種防盜鏈配置方法實(shí)例

    Nginx和Apache幾種防盜鏈配置方法實(shí)例

    這篇文章主要介紹了Nginx和Apache幾種防盜鏈配置方法實(shí)例,本文使用判斷來(lái)路的方法實(shí)現(xiàn)防盜鏈,分別給出Nginx和Apache配置實(shí)例,需要的朋友可以參考下
    2015-02-02
  • 使用Docker主機(jī)啟動(dòng)Nginx服務(wù)器的完整步驟詳解

    使用Docker主機(jī)啟動(dòng)Nginx服務(wù)器的完整步驟詳解

    Docker是一個(gè)開源的容器化平臺(tái),用于輕松地打包、部署和運(yùn)行應(yīng)用程序,而Nginx是一個(gè)高性能的開源反向代理服務(wù)器,也是一個(gè)流行的Web服務(wù)器,這篇文章主要給大家介紹了關(guān)于使用Docker主機(jī)啟動(dòng)Nginx服務(wù)器的完整步驟,需要的朋友可以參考下
    2024-07-07
  • Nginx的基本概念和原理

    Nginx的基本概念和原理

    這篇文章主要介紹了Nginx的基本概念和原理,Nginx專為性能優(yōu)化而開發(fā),性能是器最重要的考量,實(shí)現(xiàn)上非常注重效率,能經(jīng)受高負(fù)載的考驗(yàn),據(jù)報(bào)告能支持高達(dá)50,000個(gè)并發(fā)連接數(shù)。下文我們就來(lái)看看Nginx概念和原理,需要的小伙伴可以參考一下
    2022-03-03
  • Nginx worker_connections配置太低導(dǎo)致500錯(cuò)誤案例

    Nginx worker_connections配置太低導(dǎo)致500錯(cuò)誤案例

    這篇文章主要介紹了Nginx worker_connections配置太低導(dǎo)致500錯(cuò)誤案例,需要的朋友可以參考下
    2015-04-04
  • CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟

    CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟

    這篇文章主要介紹了CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • nginx rewrite 偽靜態(tài)配置參數(shù)和使用例子

    nginx rewrite 偽靜態(tài)配置參數(shù)和使用例子

    nginx下偽靜態(tài)配置參數(shù)詳細(xì)說(shuō)明,使用nginx的朋友,nginx rewrite 偽靜態(tài)配置參數(shù)和使用例子 附正則使用說(shuō)明
    2010-07-07
  • 配置nginx隱藏版本號(hào)的多種方法

    配置nginx隱藏版本號(hào)的多種方法

    在生產(chǎn)環(huán)境中,需要隱藏nginx等服務(wù)的版本信息,以免造成安全風(fēng)險(xiǎn),下面小編給大家?guī)?lái)了兩種方法,幫助大家學(xué)習(xí)配置nginx隱藏版本號(hào)的相關(guān)知識(shí),需要的朋友可以參考下
    2022-01-01
  • nginx 多個(gè)location轉(zhuǎn)發(fā)任意請(qǐng)求或訪問(wèn)靜態(tài)資源文件的實(shí)現(xiàn)

    nginx 多個(gè)location轉(zhuǎn)發(fā)任意請(qǐng)求或訪問(wèn)靜態(tài)資源文件的實(shí)現(xiàn)

    這篇文章主要介紹了nginx 多個(gè)location轉(zhuǎn)發(fā)任意請(qǐng)求或訪問(wèn)靜態(tài)資源文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Nginx的一些基本功能極速入門

    Nginx的一些基本功能極速入門

    本文主要介紹一些Nginx的最基本功能以及簡(jiǎn)單配置,但不包括Nginx的安裝部署以及實(shí)現(xiàn)原理。有興趣的可以了解一下。
    2016-12-12
  • Nginx實(shí)現(xiàn)高可用集群構(gòu)建(Keepalived+Haproxy+Nginx)

    Nginx實(shí)現(xiàn)高可用集群構(gòu)建(Keepalived+Haproxy+Nginx)

    為什么需要搭建Nginx集群?為了防止Nginx單點(diǎn)故障造成服務(wù)器癱瘓,本文介紹了Nginx實(shí)現(xiàn)高可用集群構(gòu)建(Keepalived+Haproxy+Nginx),感興趣的可以了解一下
    2021-05-05

最新評(píng)論