最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1 OpenResty介紹

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

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

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

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

1.1 Nginx 的流程定義

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

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

1.1.1 流程詳解

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

1.1.2 OpenResty處理流程

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

不同的階段,有不同的處理行為,這是 OpenResty 的一大特色,OpenResty 處理一個請求的流程參考下圖

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

2 Openresty安裝

2.1 yum安裝

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

2.1.1 添加OpenResty倉庫

運行下面的命令就可以添加我們的倉庫:

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插件分為自帶插件以及第三方插件,如果是自帶插件直接激活就可以,如果是第三方插件需要手動下載插件添加進去,這里我們以本地緩存插件安裝舉例

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)境設置

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)建一個測試的配置文件

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

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

2.3.4啟動OpenResty

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

接下來我們可以使用 curl 來測試是否能夠正常范圍

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

我們在配置文件寫的 html 已正常輸出。

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

相關文章

  • Nginx自定義日志中時間格式的操作方法

    Nginx自定義日志中時間格式的操作方法

    工作需要對接內(nèi)部的日志中臺,對日志打印有固定的格式要求,為了使Nginx的access日志也能被采集,需要對日志格式進行自定義,這篇文章主要介紹了Nginx自定義日志中時間格式,需要的朋友可以參考下
    2023-11-11
  • 詳解nginx服務器中的安全配置

    詳解nginx服務器中的安全配置

    本篇文章主要介紹了nginx服務器中的安全配置,較為詳細的分析了nginx服務器中的安全配置與相關操作注意事項,需要的朋友可以參考下。
    2016-10-10
  • 解決nginx“504?Gateway?Time-out”錯誤

    解決nginx“504?Gateway?Time-out”錯誤

    這篇文章介紹了解決nginx“504?Gateway?Time-out”錯誤的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • Nginx可視化管理軟件(Nginx Proxy Manager)的使用

    Nginx可視化管理軟件(Nginx Proxy Manager)的使用

    Nginx Proxy Manager是一款開源的Nginx可視化管理界面,本文就來介紹一下Nginx Proxy Manager的使用,感興趣的可以了解一下
    2024-03-03
  • Nginx配置中root和alias的區(qū)別及說明

    Nginx配置中root和alias的區(qū)別及說明

    這篇文章主要介紹了Nginx配置中root和alias的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 使用Nginx和Lua進行JWT校驗介紹

    使用Nginx和Lua進行JWT校驗介紹

    大家好,本篇文章主要講的是使用Nginx和Lua進行JWT校驗介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2021-12-12
  • nginx-ingress-controller日志持久化方案的解決

    nginx-ingress-controller日志持久化方案的解決

    這篇文章主要介紹了nginx-ingress-controller日志持久化方案的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Nginx部署vue項目無法直接訪問其他路徑的問題及解決

    Nginx部署vue項目無法直接訪問其他路徑的問題及解決

    Nginx部署Vue項目時無法直接訪問其他路徑的原因是Vue項目是單頁應用(SPA),前端路由由JavaScript處理,Nginx默認配置無法直接訪問其他路徑,因為服務器會嘗試查找對應路徑的文件而不是返回index.html,需要在Nginx配置中修改路由規(guī)則
    2025-12-12
  • Linux系統(tǒng)下nginx日志每天定時切割的腳本寫法

    Linux系統(tǒng)下nginx日志每天定時切割的腳本寫法

    本篇文章給大家分享使用Linux系統(tǒng)自帶的命令logrotate對Nginx日志進行切割的方法,對nginx日志切割腳本感興趣的朋友一起學習吧
    2016-11-11
  • Nginx HTTP反向代理負載均衡實驗教程

    Nginx HTTP反向代理負載均衡實驗教程

    文章描述了在192.168.65.135上部署Nginx作為七層HTTP反向代理,將www.xiaotiantian.org的流量輪詢轉(zhuǎn)發(fā)到兩臺后端Web服務器,并驗證了反向代理的負載均衡和故障轉(zhuǎn)移功能
    2025-12-12

最新評論

东至县| 大洼县| 大英县| 确山县| 海淀区| 四会市| 蓝田县| 玉龙| 溧阳市| 滕州市| 锡林浩特市| 泊头市| 灵璧县| 柯坪县| 白朗县| 墨竹工卡县| 石狮市| 聂拉木县| 商水县| 凤城市| 台北县| 昭通市| 双柏县| 建昌县| 民县| 台州市| 灵川县| 五华县| 澎湖县| 罗甸县| 濮阳市| 景东| 东兰县| 开化县| 松潘县| 威远县| 鄂温| 安塞县| 长兴县| 石台县| 阿拉善右旗|