You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alpine安装Nginx已编译upload_progress模块却提示未知指令

问题根因

nginx -V输出中的--add-dynamic-module参数说明:nginx-upload-progress-module是作为动态模块编译的,没有静态链接到Nginx主二进制文件中,必须在Nginx配置的最开头显式加载对应模块的.so文件,才能使用模块提供的upload_progress指令。
Alpine官方源的Nginx包将绝大多数第三方模块都编译为动态模块存放在/usr/lib/nginx/modules/目录下,不会默认自动加载,这就是编译参数中存在模块、配置语法无错误,但Nginx仍然识别不到对应指令的核心原因。

修复步骤
  • 第一步:验证模块文件是否存在,进入容器执行以下命令:
ls /usr/lib/nginx/modules/ngx_http_uploadprogress_module.so

如果提示文件不存在,执行命令安装对应动态模块包即可:

apk add nginx-mod-http-upload-progress
  • 第二步:修改nginx.conf,在配置文件最顶部(worker_processes指令之前)添加动态模块加载指令:
load_module modules/ngx_http_uploadprogress_module.so;
  • 第三步:修正后的完整配置开头示例如下,其余原有配置保持不变即可:
# nginx.conf
load_module modules/ngx_http_uploadprogress_module.so;

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    upload_progress uploads 1m;
    types_hash_max_size 4096;
    client_max_body_size 1000M;

    sendfile        on;

    keepalive_timeout  600;

    server {
        server_name aldrune.com;
        autoindex off;

        listen 80;

        root /frontend;

        location /session_audio/ {
            #CORS
            add_header Access-Control-Allow-Origin '*';

            alias /audiomedia/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}
  • 第四步:重新执行nginx -t验证配置合法性,此时不会再报unknown directive "upload_progress"错误。
补充说明

Alpine源的Nginx中,所有编译参数带=dynamic后缀、以及通过--add-dynamic-module编译的模块,都需要通过load_module指令手动加载,加载语句必须放在全局配置块最开头,不能放在http、events等块内部。后续如果需要使用其他第三方模块(比如brotli压缩、headers-more、lua模块等),也需要先确认对应动态模块.so文件路径,在配置顶部加载后才能使用对应指令。

内容的提问来源于stack exchange,提问作者Philipp Doerner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:12:14