日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于OpenResty的弹性网关实践(一)

發布時間:2025/3/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于OpenResty的弹性网关实践(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、介紹

1. OpenResty簡介

官方地址:http://openresty.org/cn/

github地址:https://github.com/openresty/

OpenResty最佳實踐:https://moonbingbing.gitbooks.io/openresty-best-practices/content/

?

OpenResty是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用于方便地搭建能夠處理超高并發、擴展性極高的動態 Web 應用、Web 服務和動態網關。

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

OpenResty 致力于將你的服務器端應用完全運行于 Nginx 服務器中,充分利用 Nginx 的事件模型來進行非阻塞 I/O 通信。不僅僅是和 HTTP 客戶端間的網絡通信是非阻塞的,與MySQL、PostgreSQL、Memcached 以及 Redis 等眾多遠方后端之間的網絡通信也是非阻塞的。

OpenResty創始人:章亦春

江湖人稱“春哥”,編程之路起于看不懂而抄書,就算如今已是罕見的編程高手,春哥依然逢人大力推薦他的抄書學編程之法。

創立的OpenResty開源社區,獲得了錘子科技一百萬的捐贈。

個人歷程:

  • 江蘇鎮江人,1999年,初中的章亦春第一次接觸《C 語言程序設計》靠手抄自學編程,進入江蘇大學后,一發不可收拾的迷戀上開源世界。

  • 結束淘寶量子統計的工作后,全心從事 OpenResty 等開源項目的工作;

  • 2017年,在美國創辦了 OpenResty Inc. 公司。

2. Lua簡介

lua教程

Lua 是一種輕量小巧的腳本語言,用標準C語言編寫并以源代碼形式開放, 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定制功能。

二、Centos下的安裝

nginx的安裝可以參考如下鏈接:

Centos7安裝Nginx

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

3.安裝好的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

在瀏覽器中訪問:

?

四、Hello World

我們先來創建工作目錄

mkdir study cd study mkdir logs/ conf/

下面是一個最簡化的 nginx.conf,在根目錄下新增 OpenResty 的content_by_lua指令,里面嵌入了ngx.say的代碼:

events {worker_connections 1024; } ? http {server {listen 8080;location / {content_by_lua 'ngx.say("hello, world")';}} }

啟動OpenResty服務

/usr/sbin/nginx -p '/data/soft/study/' -c conf/nginx.conf

沒有報錯的話,OpenResty 的服務就已經成功啟動了。你可以打開瀏覽器,或者使用 curl 命令,來查看結果的返回:

[root@VM_0_7_centos soft]# curl -i 127.0.0.1:8080 HTTP/1.1 200 OK Server: openresty/1.9.15.1 Date: Tue, 22 Sep 2020 12:58:33 GMT Content-Type: text/plain Transfer-Encoding: chunked Connection: keep-alive ? hello, world

我們剛才是把 Lua 代碼寫在 Nginx 配置文件中。不過,如果代碼越來越多,那代碼的可讀性和可維護性就無法保證了。

我們可以單獨創建一個工作目錄來維護lua代碼:

$ mkdir lua $ cat lua/hello.lua ngx.say("hello, world")

然后修改 nginx.conf 的配置,把 content_by_lua_block 改為 content_by_lua_file:

pid logs/nginx.pid; events {worker_connections 1024; } ? http {server {listen 8080;location / {content_by_lua_file lua/hello.lua;}}}

最后,重啟 OpenResty 的服務就可以了:

$ /usr/sbin/nginx -p '/data/soft/study/' -c conf/nginx.conf -s reload ? # 也可以強制殺進程,然后在啟動 $ sudo kill -HUP `cat logs/nginx.pid` $ sudo fuser -k -n tcp 8080 #該命令可以強行Kill掉某個端口

你可以使用 curl ,驗證是否返回了預期的結果。至于后面 Lua 代碼的變更,你就可以直接修改 hello.lua 這個文件,而不是 nginx.conf 了。

思考:

1.content_by_lua_file lua/hello.lua; 里面寫的是相對路徑,那么 OpenResty 是如何找到這個 Lua 文件的?

如果原本給出的是相對路徑,那么 OpenResty 在啟動時,會把 OpenResty 啟動的命令行參數中的 -p PATH 作為前綴,將相對路徑拼接為絕對路徑。這樣,自然就可以順利找到 Lua 文件。

2.Lua 代碼內容的變更,需要重啟 OpenResty 服務才會生效,這樣顯然不方便調試,那么有沒有什么即時生效的方法呢?

Lua 代碼在第一個請求時會被加載,并默認緩存起來。所以在你每次修改 Lua 源文件后,都必須重新加載 OpenResty 才會生效。其實,在 nginx.conf 中關閉 lua_code_cache 就能避免重新加載,這一點你可以自己試試看。不過,特別需要注意的是,這種方法只能臨時用于開發和調試,如果是線上部署,一定要記得打開緩存,否則會非常影響性能。

lua_code_cache off; #關閉緩存 lua_code_cache on; ?#開啟緩存

3.如何把 lua 代碼所在的文件夾,加入到 OpenResty 的查找路徑中呢?

OpenResty 提供了 lua_package_path 指令,可以設置 Lua 模塊的查找路徑。針對上面的例子,我們可以把 lua_package_path 設置為 $prefix/lua/?.lua;;

  • $prefix就是啟動參數中的 -p PATH;

  • /lua/?.lua表示 lua 目錄下所有以 .lua 作為后綴的文件;

  • 最后的兩個分號,則代表內置的代碼搜索路徑。

lua_package_path '/data/paopao/paopao_gw/lua/?.lua;/usr/local/openresty/luajit/lib/lua/5.1/?.lua;/usr/local/openresty/lualib/md5/?.lua;;'; ? # lua_package_path 這個指令是用來加載 Lua 模塊而使用的,比如我們在調用 require 'cjson' 時,就會到lua_package_path 中的指定目錄中,去查找 cjson 這個模塊。

總結

以上是生活随笔為你收集整理的基于OpenResty的弹性网关实践(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费的av网站 | 乱人伦av | 国产日产欧美一区二区 | 91亚洲专区 | 黄色网址在线免费播放 | 国产日本在线观看 | 午夜久久 | 黄色三级在线视频 | 男人和女人做爽爽视频 | 日韩精品一区在线 | 91精品久 | 麻豆va | 妖精视频污 | 中文字幕乱码一区 | 欧美精品一区二区在线播放 | 99免费在线观看 | 日本九九视频 | 国产精品不卡一区二区三区 | 波多野结衣免费在线视频 | 免费无遮挡在线观看视频网站 | 1024福利 | 亚洲成人福利视频 | 亚洲成人av免费观看 | 久久人人添人人爽添人人片 | 淫片网站 | 午夜色av | 亚洲人成网址 | av巨作| 手机av免费在线观看 | 亚洲成人av网址 | 欧州一区 | 国产精品久久久久久久成人午夜 | 国产精品手机在线 | 主人性调教le百合sm | 免费毛片基地 | brazzers精品成人一区 | 包射屋 | 91精品人妻互换一区二区 | 欧美激情综合五月色丁香 | 日韩精品一区二区在线播放 | 日韩视频国产 | 日韩经典在线 | 精品一性一色一乱农村 | 一卡二卡三卡在线观看 | 午夜伦理av | 在线观看91| av第一福利 | 老司机精品视频在线播放 | 亚洲a网| 国产主播中文字幕 | 免费成人美女在线观看. | 国产精品久久伊人 | 久久久噜噜噜久久中文字幕色伊伊 | 99精品视频一区二区三区 | 奇米中文字幕 | 精品久久久久久无码人妻 | 中文字幕国产在线观看 | 91极品蜜桃臀 | 波多野结衣亚洲视频 | 女同性做受全过程动图 | 日韩字幕在线 | 亚洲av无码一区二区乱子仑 | 无码人妻久久一区二区三区蜜桃 | 久久精品—区二区三区舞蹈 | 日本精品一区视频 | 西比尔在线观看完整视频高清 | 亚洲三级成人 | 成年人免费黄色 | 久操香蕉| 精品国产aⅴ一区二区三区东京热 | 欧美一区2区三区4区公司 | 亚洲成人免费 | 日本精品久久 | 这里只有精品视频在线观看 | 99热国产| 黄色正能量网站 | 爱爱一区二区三区 | 殴美一级视频 | 91在线观看 | 黑人操欧美人 | 久草综合在线观看 | 中国爆后菊女人的视频 | 欧美一级日韩一级 | 午夜视频在线免费 | 91视频污在线观看 | 日韩v | 中文字幕在线播 | 黄色第一网站 | 亚洲色图第一页 | 亚洲经典视频 | 成人久色| 猫咪av在线| 欧美亚洲在线播放 | 亚洲AV无码国产日韩久久 | 自拍偷拍日韩 | 国产精品无码一区二区无人区多人 | 欧美人与动物xxx | 一区二区三区四区免费视频 | 午夜爽爽爽视频 |