Nginx 默认不支持 Memcached,需通过源码编译添加 memc-nginx-module 模块(依赖 ngx_devel_kit),并配合业务逻辑实现缓存读写。

Nginx 默认不带 Memcached 支持,必须通过源码编译显式加入对应模块。关键不是“启用”,而是“编译进新模块”——Nginx 本身没有内置的 memcached 功能,需借助第三方模块(如 memc-nginx-module 或较旧的 ngx_http_memcached_module)实现与 Memcached 的交互。
选对模块:memc-nginx-module 是主流选择
官方 ngx_http_memcached_module 功能非常基础(仅支持 get),已基本被弃用;生产环境推荐使用 OpenResty 社区维护的 memc-nginx-module,它支持完整的 Memcached 协议操作(set、get、delete、incr 等),且与 srcache-nginx-module 配合可构建透明缓存层。
- 下载地址:https://www.php.cn/link/2f893e8343792e2fce3b2c05653df01a
- 解压到本地目录,例如
/usr/local/src/memc-nginx-module - 注意:该模块依赖 ngx_devel_kit(NDK),需一并下载编译
编译前准备依赖和已有参数
先运行 nginx -V 查看当前 Nginx 的完整 configure 命令,复制下来——这是保留原有功能的基础。然后在该命令末尾追加模块路径:
- 安装必要开发库:
yum install gcc pcre-devel zlib-devel openssl-devel -y(CentOS)或apt-get install build-essential libpcre3-dev libz-dev libssl-dev -y(Ubuntu) - 确保 LuaJIT 和 lua-nginx-module(如需 Lua 控制逻辑)已就绪,否则 memc 模块部分高级用法受限
- 把 NDK 和 memc 模块路径加入 configure 命令,例如:
--add-module=/usr/local/src/ngx_devel_kit--add-module=/usr/local/src/memc-nginx-module
执行编译安装并验证
进入 Nginx 源码目录,执行更新后的 configure 命令,再 make & make install:
- 编译:
make -j$(nproc)(利用多核加速) - 安装:
sudo make install(默认覆盖原安装,建议先备份 conf) - 验证是否加载成功:
nginx -V 2>&1 | grep -o memc应输出memc;或检查nginx -t是否报模块未识别错误 - 配置示例片段(放在 location 中):
memc_pass 127.0.0.1:11211;<br>memc_cmds_allowed get set delete;
配置后不能直接缓存,需配合业务逻辑
模块只是“通道”,不自动缓存任何内容。真实缓存行为由以下两部分协同决定:
-
前端请求路由:用
set $memc_key或 Lua 脚本生成唯一 key,调用memc_pass尝试读取 - 后端写入机制:PHP/Python 等应用在生成页面后,主动调用 Memcached 客户端(如 php-memcached 扩展)写入对应 key-value,并控制过期时间
- 常见模式:404 错误页跳转到后端生成内容 → 后端写入 memcached → 下次请求命中缓存


















