nginx是我们最常用的服务器,常用于做内容分发和反向代理,lua是一种类C的脚本语言,广泛应用于游戏行业,十年前页游流行的时候,我曾经买过传奇类游戏的源码,游戏中的服务端就是用lua实现的。我们常用来配合nginx、envoy和redis做一些简单实用的功能,比如:超卖和少卖、排行榜等,减少请求到达后端java的频率
成都创新互联公司专业为企业提供洛隆网站建设、洛隆做网站、洛隆网站设计、洛隆网站制作等企业网站建设、网页设计与制作、洛隆企业网站模板建站服务,十多年洛隆做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
下面开始构建nginx+lua的镜像,自己构建的原因是怕别人提供的镜像里有病毒,docker非官方镜像中有很多病毒,这一点大家需要注意
本文采用openresty版本的nginx,具体openresty、nginx和lua的说明大家可以百度一下
构建镜像之前需要先准备好nginx-module-vts模块和openresty-1.15.8.3的压缩包,这两个压缩包百度一下就能找到,我也不知道公众号文章能不能插外链,其中nginx-module-vts这个模块的作用是统计nginx的访问数据,如果自己用prometheus+grafana监控nginx,就需要安装这个模块,我们索性一起编译进来
在服务器上创建目录
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# 更新数据源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# 复制工具包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目录下创建test.lua文件
ngx.say('{"code": 1, "msg": "hello world!"}')启动容器后,访问IP:80/lua/test就可以看到输出了{"code": 1, "msg": "hello world!"},说明lua脚本已经生效
至此nginx+lua已经搭建完毕,在以后的文章中会再介绍一些常用的lua脚本,如:JWT验证、操作Redis、消息队列等,可以实现很多功能,只要你能想到都可以实现
到此这篇关于nginx+lua单机上万并发的实现的文章就介绍到这了,更多相关nginx lua单机并发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!