nginx是我們最常用的服務(wù)器,常用于做內(nèi)容分發(fā)和反向代理,lua是一種類C的腳本語言,廣泛應(yīng)用于游戲行業(yè),十年前頁游流行的時候,我曾經(jīng)買過傳奇類游戲的源碼,游戲中的服務(wù)端就是用lua實現(xiàn)的。我們常用來配合nginx、envoy和redis做一些簡單實用的功能,比如:超賣和少賣、排行榜等,減少請求到達后端java的頻率
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供洛隆網(wǎng)站建設(shè)、洛隆做網(wǎng)站、洛隆網(wǎng)站設(shè)計、洛隆網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、洛隆企業(yè)網(wǎng)站模板建站服務(wù),十多年洛隆做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
下面開始構(gòu)建nginx+lua的鏡像,自己構(gòu)建的原因是怕別人提供的鏡像里有病毒,docker非官方鏡像中有很多病毒,這一點大家需要注意
本文采用openresty版本的nginx,具體openresty、nginx和lua的說明大家可以百度一下
構(gòu)建鏡像之前需要先準備好nginx-module-vts模塊和openresty-1.15.8.3的壓縮包,這兩個壓縮包百度一下就能找到,我也不知道公眾號文章能不能插外鏈,其中nginx-module-vts這個模塊的作用是統(tǒng)計nginx的訪問數(shù)據(jù),如果自己用prometheus+grafana監(jiān)控nginx,就需要安裝這個模塊,我們索性一起編譯進來
在服務(wù)器上創(chuàng)建目錄
cd /usr/local/dockermkdir -p nginx-lua/buildcd nginx-lua搭建好之后的完整目錄如下:
root@today2:/usr/local/docker/nginx-lua# tree.├── build│ ├── Dockerfile│ ├── nginx-module-vts.zip│ └── openresty-1.15.8.3.tar.gz├── docker-compose.yml├── lua│ ├── test.lua├── nginx.conf├── wwwroot│ ├── index.htmlDockerfileDockerfile文件放到build目錄下,把下載好的nginx-module-vts.zip和openresty-1.15.8.3.tar.gz也放到build目錄下
FROM ubuntu:xenial# 更新數(shù)據(jù)源WORKDIR /etc/aptRUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > sources.listRUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> sources.listRUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> sources.listRUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> sources.listRUN apt-get update# 安裝依賴RUN apt-get install unzip make gcc libpcre3-dev libssl-dev perl build-essential curl zlib1g-dev --assume-yes# 復(fù)制工具包ADD openresty-1.15.8.3.tar.gz /usr/local/srcADD nginx-module-vts.zip /usr/local/src# nginx-module-vtsWORKDIR /usr/local/srcRUN unzip nginx-module-vts.zipWORKDIR /usr/local/src/openresty-1.15.8.3RUN rm -rf ./MakefileRUN ./configure --add-module=/usr/local/src/nginx-module-vtsRUN make && make install# 配置 Nginx,注釋掉,在啟動容器時掛載到容器中# ADD nginx.conf /usr/local/openresty/nginx/conf/WORKDIR /EXPOSE 80CMD ["/usr/local/openresty/nginx/sbin/nginx", "-c", "/usr/local/openresty/nginx/conf/nginx.conf", "-g", "daemon off;"]nginx.conf在./lua目錄下創(chuàng)建test.lua文件
ngx.say('{"code": 1, "msg": "hello world!"}')啟動容器后,訪問IP:80/lua/test就可以看到輸出了{"code": 1, "msg": "hello world!"},說明lua腳本已經(jīng)生效
至此nginx+lua已經(jīng)搭建完畢,在以后的文章中會再介紹一些常用的lua腳本,如:JWT驗證、操作Redis、消息隊列等,可以實現(xiàn)很多功能,只要你能想到都可以實現(xiàn)
到此這篇關(guān)于nginx+lua單機上萬并發(fā)的實現(xiàn)的文章就介紹到這了,更多相關(guān)nginx lua單機并發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
分享標題:nginx+lua單機上萬并發(fā)的實現(xiàn)
網(wǎng)頁路徑:http://jinyejixie.com/article8/dscip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站導(dǎo)航、面包屑導(dǎo)航、網(wǎng)站設(shè)計、手機網(wǎng)站建設(shè)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)