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

nginx+lua單機(jī)上萬并發(fā)的實(shí)現(xiàn)

 更新時(shí)間:2021年05月30日 14:20:42   作者:飛翔的代碼  
nginx是我們最常用的服務(wù)器,常用于做內(nèi)容分發(fā)和反向代理,本文主要介紹了nginx+lua單機(jī)上萬并發(fā)的實(shí)現(xiàn),有興趣的可以了解下

nginx是我們最常用的服務(wù)器,常用于做內(nèi)容分發(fā)和反向代理,lua是一種類C的腳本語(yǔ)言,廣泛應(yīng)用于游戲行業(yè),十年前頁(yè)游流行的時(shí)候,我曾經(jīng)買過傳奇類游戲的源碼,游戲中的服務(wù)端就是用lua實(shí)現(xiàn)的。我們常用來配合nginx、envoy和redis做一些簡(jiǎn)單實(shí)用的功能,比如:超賣和少賣、排行榜等,減少請(qǐng)求到達(dá)后端java的頻率

下面開始構(gòu)建nginx+lua的鏡像,自己構(gòu)建的原因是怕別人提供的鏡像里有病毒,docker非官方鏡像中有很多病毒,這一點(diǎn)大家需要注意

本文采用openresty版本的nginx,具體openresty、nginx和lua的說明大家可以百度一下

構(gòu)建鏡像之前需要先準(zhǔn)備好nginx-module-vts模塊和openresty-1.15.8.3的壓縮包,這兩個(gè)壓縮包百度一下就能找到,我也不知道公眾號(hào)文章能不能插外鏈,其中nginx-module-vts這個(gè)模塊的作用是統(tǒng)計(jì)nginx的訪問數(shù)據(jù),如果自己用prometheus+grafana監(jiān)控nginx,就需要安裝這個(gè)模塊,我們索性一起編譯進(jìn)來

在服務(wù)器上創(chuàng)建目錄

cd /usr/local/docker
mkdir -p nginx-lua/build
cd 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.html

Dockerfile

Dockerfile文件放到build目錄下,把下載好的nginx-module-vts.zip和openresty-1.15.8.3.tar.gz也放到build目錄下

FROM ubuntu:xenial

# 更新數(shù)據(jù)源
WORKDIR /etc/apt
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > sources.list
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> sources.list
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> sources.list
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> sources.list
RUN 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/src
ADD nginx-module-vts.zip /usr/local/src

# nginx-module-vts
WORKDIR /usr/local/src
RUN unzip nginx-module-vts.zip

WORKDIR /usr/local/src/openresty-1.15.8.3
RUN rm -rf ./Makefile
RUN ./configure --add-module=/usr/local/src/nginx-module-vts
RUN make && make install

# 配置 Nginx,注釋掉,在啟動(dòng)容器時(shí)掛載到容器中
# ADD nginx.conf /usr/local/openresty/nginx/conf/

WORKDIR /
EXPOSE 80
CMD ["/usr/local/openresty/nginx/sbin/nginx", "-c", "/usr/local/openresty/nginx/conf/nginx.conf", "-g", "daemon off;"]

nginx.conf

user root;
worker_processes  auto;

worker_rlimit_nofile 65535;

events {
 worker_connections  102400;
 use epoll;
}

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

 #access_log /var/log/nginx/access.log;
 access_log off;
 error_log /var/log/nginx/error.log;

 keepalive_timeout  65;
 client_max_body_size 10m;
 
 gzip on;
 gzip_disable "msie6";
 gzip_min_length 1000;
 gzip_proxied expired no-cache no-store private auth;
 gzip_types text/plain application/xml application/javascript text/css application/x-javascript;

 # 下面3行是安裝了nginx-module-vts模塊后設(shè)置nginx流量統(tǒng)計(jì),本文主要講lua,所以下面3行可以注釋掉
 vhost_traffic_status_zone;
 vhost_traffic_status_filter_by_host on;
 vhost_traffic_status_filter_by_set_key $uri uri::$server_name;

 server {
  listen 80;
  root /usr/share/nginx/html;

  # lua腳本是否開啟緩存,在調(diào)試階段設(shè)為off(修改lua文件后不用重啟nginx),在正式環(huán)境一定要注釋掉這一行,以提高性能
  lua_code_cache off;

  # 這個(gè)location是真正調(diào)用lua腳本的設(shè)置
  location /lua/test {
   # 指定返回的類型是json
   default_type 'application/json';
   # 指定訪問/lua/test時(shí)由test.lua來返回內(nèi)容,這個(gè)路徑需要注意是容器中的路徑,千萬不要和宿主機(jī)搞混淆了
   content_by_lua_file '/usr/local/lua/test.lua';
  }

  # 也是流量統(tǒng)計(jì),可以注釋掉
  location /status {
   vhost_traffic_status_display;
   vhost_traffic_status_display_format html;
  }

 }
}

docker-compose.yml

version: '3.1'
services:
  nginx:
    build: build # 左邊build指的是當(dāng)前容器需要構(gòu)建鏡像,右邊build表示構(gòu)建鏡像的文件在build這個(gè)目錄下
    restart: always
    container_name: nginx
    network_mode: host # 不一定非要指定host模式,這里只是為了方便
    volumes:
      - ./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
      - ./log:/var/log/nginx/
      - ./wwwroot:/usr/share/nginx/html
      - ./lua:/usr/local/lua

test.lua

在./lua目錄下創(chuàng)建test.lua文件

ngx.say('{"code": 1, "msg": "hello world!"}')

啟動(dòng)容器后,訪問IP:80/lua/test就可以看到輸出了{(lán)"code": 1, "msg": "hello world!"},說明lua腳本已經(jīng)生效

至此nginx+lua已經(jīng)搭建完畢,在以后的文章中會(huì)再介紹一些常用的lua腳本,如:JWT驗(yàn)證、操作Redis、消息隊(duì)列等,可以實(shí)現(xiàn)很多功能,只要你能想到都可以實(shí)現(xiàn)

到此這篇關(guān)于nginx+lua單機(jī)上萬并發(fā)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx lua單機(jī)并發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入淺析nginx四種調(diào)度算法和進(jìn)階

    深入淺析nginx四種調(diào)度算法和進(jìn)階

    這篇文章主要介紹了深入淺析nginx四種調(diào)度算法和進(jìn)階,文中給大家提到了upstream 支持4種負(fù)載均衡調(diào)度算法,需要的朋友可以參考下
    2018-06-06
  • Nginx access.log日志詳解及統(tǒng)計(jì)分析小結(jié)

    Nginx access.log日志詳解及統(tǒng)計(jì)分析小結(jié)

    nginx有一個(gè)非常靈活的日志記錄模式,本文主要介紹了Nginx access.log日志詳解及統(tǒng)計(jì)分析小結(jié),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 使用Nginx搭建流媒體服務(wù)器實(shí)現(xiàn)直播功能

    使用Nginx搭建流媒體服務(wù)器實(shí)現(xiàn)直播功能

    這篇文章主要介紹了使用Nginx搭建流媒體服務(wù)器實(shí)現(xiàn)直播功能,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)

    nginx connect() to unix:/var/run/php-fpm.sock failed (11: Re

    這篇文章主要介紹了nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable),需要的朋友可以參考下
    2015-01-01
  • 基于nginx反向代理獲取用戶真實(shí)Ip地址詳解

    基于nginx反向代理獲取用戶真實(shí)Ip地址詳解

    我們?cè)L問互聯(lián)網(wǎng)上的服務(wù)時(shí),大多數(shù)時(shí)客戶端并不是直接訪問到服務(wù)端的,而是客戶端首先請(qǐng)求到反向代理,反向代理再轉(zhuǎn)發(fā)到服務(wù)端實(shí)現(xiàn)服務(wù)訪問,這篇文章主要給大家介紹了關(guān)于如何基于nginx反向代理獲取用戶真實(shí)Ip地址的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Nginx中實(shí)現(xiàn)請(qǐng)求的緩存數(shù)據(jù)過期通知

    Nginx中實(shí)現(xiàn)請(qǐng)求的緩存數(shù)據(jù)過期通知

    Nginx 作為高性能的反向代理服務(wù)器,緩存機(jī)制是其優(yōu)化性能的重要手段之一,本文主要介紹了Nginx中實(shí)現(xiàn)請(qǐng)求的緩存數(shù)據(jù)過期通知,感興趣的可以了解一下
    2024-09-09
  • Nginx負(fù)載均衡詳細(xì)介紹

    Nginx負(fù)載均衡詳細(xì)介紹

    nginx不單可以作為強(qiáng)大的web服務(wù)器,也可以作為一個(gè)反向代理服務(wù)器,而且nginx還可以按照調(diào)度規(guī)則實(shí)現(xiàn)動(dòng)態(tài)、靜態(tài)頁(yè)面的分離,可以按照輪詢、ip哈希、URL哈希、權(quán)重等多種方式對(duì)后端服務(wù)器做負(fù)載均衡,同時(shí)還支持后端服務(wù)器的健康檢查
    2016-09-09
  • Nginx部署多個(gè)vue項(xiàng)目的方法步驟

    Nginx部署多個(gè)vue項(xiàng)目的方法步驟

    本文主要介紹了Nginx部署多個(gè)vue項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Nginx啟動(dòng)不了原因解決(端口占用)

    Nginx啟動(dòng)不了原因解決(端口占用)

    本文主要介紹了Nginx啟動(dòng)不了原因解決(端口占用),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Nginx出現(xiàn)403錯(cuò)誤,應(yīng)該如何解決

    Nginx出現(xiàn)403錯(cuò)誤,應(yīng)該如何解決

    這篇文章主要介紹了Nginx出現(xiàn)403錯(cuò)誤,應(yīng)該如何解決?具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評(píng)論

诸暨市| 环江| 万全县| 宁明县| 巴青县| 阜宁县| 罗源县| 城口县| 天全县| 安岳县| 修文县| 惠来县| 梅州市| 莱西市| 奇台县| 黔西| 新源县| 宜川县| 奎屯市| 兰州市| 新闻| 香港| 荆州市| 休宁县| 苗栗县| 彩票| 沙田区| 康马县| 辰溪县| 大安市| 旬邑县| 黄冈市| 延庆县| 年辖:市辖区| 海口市| 上饶市| 宁波市| 汾西县| 巫山县| 临汾市| 长垣县|