如何在 Alpine Linux 上为 Nginx 添加 Lua 模块?

我想要一个启用了 Lua 模块的精简 Docker 镜像,基于 Alpine Linux,如何创建此镜像?

点赞
用户2915097
用户2915097

你可以在 Docker Hub 上查找,找到一个基于 Alpine Linux 的带有 Lua 支持的 Nginx 镜像。

一些示例:

如果需要更多细节,请查看 Dockerfile。

2017-11-18 13:02:56
用户1228491
用户1228491

这里是一个 Dockerfile:

FROM alpine:3.6

RUN apk add --no-cache nginx-mod-http-lua

# 删除默认配置
RUN rm -r /etc/nginx/conf.d && rm /etc/nginx/nginx.conf

# 创建 PID 文件夹
RUN mkdir -p /run/nginx

# 添加我们的 nginx 配置
COPY ./nginx.conf /etc/nginx/nginx.conf

CMD ["nginx"]

安装 nginx-mod-http-lua 的软件包也会安装 nginxluajit,以及其他组件。

nginx.conf 应该至少包含以下内容:

load_module /usr/lib/nginx/modules/ndk_http_module.so;
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so;

pcre_jit on;

events {
  worker_connections 1024;
}

daemon off;
2017-11-18 13:03:58
用户6759337
用户6759337

我们使用Openresty,这是一个集成了nginx和Lua的平台。

在默认的nginx文件中,你可以这样调用Lua:

server {
    listen 80;
    listen 443 ssl; # 'ssl' parameter tells NGINX to decrypt the traffic

    # 1
    location ~ /api/(.*) {
        resolver xxx.x.x.xx;

    rewrite_by_lua_block {
        ngx.req.set_header("x-header", "12345678901234567")

    }
}

这里有一个阿尔派镜像:https://github.com/openresty/docker-openresty/tree/master/

还有一个alpine-fat,其中包括了‘make’,‘git’和其他库,可以帮助你在Docker镜像中进行构建。

2018-05-24 23:06:55
用户11002328
用户11002328

Dockerfile:

FROM nginx:1.15-alpine
RUN  mkdir -p /run/nginx
RUN  apk add --no-cache nginx-mod-http-lua
COPY nginx_conf/ /etc/nginx/ # Your nginx conf
COPY lua/ /etc/lua/          # Your lua files

Nginx 配置文件的第一行:

load_module /usr/lib/nginx/modules/ndk_http_module.so;
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so;
pcre_jit on;
2019-05-05 16:27:44
用户13664380
用户13664380

参见: "向nginx官方镜像中加入第三方模块" 在: https://github.com/nginxinc/docker-nginx/tree/master/modules

可以通过遵循简单的文件系统布局/语法使用build_module.sh辅助脚本撰写自己的指令,或者回退到pkg-oss的包源,将主线镜像扩展为包含第三方模块。

$ docker build --build-arg ENABLED_MODULES="ndk lua" -t my-nginx-with-lua .
2021-09-23 13:55:50