Nginx headers-more模块实战:编译集成与HTTP头动态管理
1. 项目缘起为什么需要动态修改HTTP头在Web开发和运维的日常工作中Nginx作为反向代理和负载均衡器的角色已经深入人心。但你是否遇到过这样的场景上游应用返回的响应头里缺少了关键的Cache-Control导致CDN缓存策略失效或者你需要为所有经过Nginx的请求统一添加一个X-Request-ID用于全链路追踪又或者上游服务返回了一个你不想暴露给客户端的内部头信息比如X-Powered-By: PHP需要将其移除。Nginx原生的add_header和proxy_hide_header指令看似能解决部分问题但它们存在明显的局限性。add_header只在特定阶段如成功响应时生效且会覆盖同名的已有头部proxy_hide_header只能隐藏上游传下来的头无法处理请求头。更重要的是它们缺乏灵活性无法实现“条件化”的增删改查。这就是headers-more-nginx-module模块大显身手的地方。它是一个第三方Nginx模块提供了more_set_headers,more_clear_headers,more_set_input_headers,more_clear_input_headers等一系列强大指令允许你在Nginx处理请求和响应的多个阶段对HTTP头部进行精细化的、条件化的操作。它弥补了原生指令的不足是构建健壮、安全、可观测的Web架构中不可或缺的一块拼图。本文将手把手带你完成从源码编译集成headers-more-nginx-module到生产环境实战应用的全过程并分享我多年使用中积累的避坑经验和高级技巧。2. 编译集成两种主流方案的深度对比与实操为Nginx添加第三方模块通常有两种路径动态模块Dynamic Module加载和静态编译。headers-more-nginx-module对两种方式都支持但选择哪种取决于你的运维场景和技术栈。2.1 方案一静态编译——稳定与性能的基石静态编译是将模块代码直接编译进Nginx二进制文件。这是最传统、也是最推荐用于生产环境的方式因为它能获得最好的性能和兼容性无需担心运行时模块加载失败。第一步环境准备与源码获取假设我们在一台干净的CentOS 7服务器上操作。首先安装编译所需的工具链和依赖库。yum groupinstall -y Development Tools yum install -y pcre-devel openssl-devel zlib-devel wget git接着确定你要安装的Nginx版本。这里以稳定版nginx-1.24.0为例。同时获取headers-more-nginx-module的最新源码。cd /usr/local/src wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz git clone https://github.com/openresty/headers-more-nginx-module.git注意headers-more-nginx-module的官方仓库在GitHub上由OpenResty团队维护。使用git clone能确保你获取到最新的功能和修复。如果服务器无法访问GitHub可以先将仓库下载到本地再上传。第二步配置与编译进入Nginx源码目录执行configure脚本。这里的关键是--add-module参数它指定了第三方模块的路径。cd nginx-1.24.0 ./configure \ --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --add-module/usr/local/src/headers-more-nginx-moduleconfigure命令会检查系统环境并生成编译配置。请务必加上你业务所需的其他模块如SSL、HTTP/2等。执行成功后会输出一个包含模块列表的摘要请仔细核对其中是否有headers_more_filter_module这是该模块在Nginx内部的名称。确认无误后开始编译和安装。make make install编译过程可能会持续几分钟。安装完成后新的Nginx二进制文件将位于/usr/local/nginx/sbin/nginx。第三步验证与迁移验证模块是否成功编译进去/usr/local/nginx/sbin/nginx -V 21 | grep headers_more如果输出中包含--add-module/usr/local/src/headers-more-nginx-module则说明静态编译成功。对于已有Nginx服务的升级这是一个需要谨慎对待的过程。标准的做法是备份旧的Nginx二进制文件和配置文件。将新编译的nginx二进制文件替换旧文件。使用nginx -t测试新配置文件语法。通过nginx -s reload平滑重载配置或nginx -s quit后启动新进程。2.2 方案二动态模块——灵活与便捷的权衡从Nginx 1.9.11开始支持将模块编译为独立的.so文件在运行时通过load_module指令加载。这种方式非常灵活可以在不重新编译Nginx主程序的情况下增删模块。动态模块的编译编译命令与静态编译类似但需要使用--add-dynamic-module参数并指定一个模块输出目录。cd nginx-1.24.0 ./configure \ --prefix/usr/local/nginx \ --with-http_ssl_module \ ... # 其他你需要的模块 --add-dynamic-module/usr/local/src/headers-more-nginx-module \ --modules-path/usr/local/nginx/modules make make install编译完成后你会在/usr/local/nginx/modules目录下找到名为ngx_http_headers_more_filter_module.so的动态模块文件。配置加载与注意事项在Nginx的主配置文件nginx.conf的顶部events块之前添加加载指令load_module modules/ngx_http_headers_more_filter_module.so;动态模块看似美好但在生产环境我持保守态度。原因有三兼容性风险动态模块与Nginx核心必须使用完全相同的编译环境和依赖库版本否则可能导致崩溃或未定义行为。在升级Nginx主版本时动态模块几乎必须重新编译。性能微损耗虽然通常可忽略不计但动态加载确实引入了额外的间接调用开销。初始化顺序某些模块对加载顺序有要求动态加载可能使问题复杂化。因此我的建议是在开发、测试环境或需要快速验证模块功能时可以使用动态模块。但对于追求长期稳定性的生产环境静态编译仍然是更可靠的选择。3. 核心指令详解从增删改查到条件化操作模块集成成功后我们来深入剖析其提供的核心指令。理解每个指令的作用阶段和细微差别是正确使用它的关键。3.1 响应头操作more_set_headers与more_clear_headers这两个指令用于处理发送给客户端的响应头。它们通常在header_filter阶段生效即Nginx准备发送响应头给客户端时。more_set_headers设置或覆盖响应头它的语法非常灵活more_set_headers Header: Value; more_set_headers -s 404 X-Error-Reason: Not Found;第一行是最简单的用法为所有响应设置或覆盖Header。如果Header已存在则其值会被替换。第二行展示了条件化操作-s参数指定了HTTP状态码意味着只有当响应码为404时才会设置这个头。你可以同时设置多个头more_set_headers X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff Cache-Control: public, max-age3600 ;more_clear_headers清除响应头这个指令用于移除不希望发送给客户端的响应头。more_clear_headers X-Powered-By; more_clear_headers -s 200 Server;第一行清除所有响应中的X-Powered-By头。第二行则只清除状态码为200的响应中的Server头Nginx默认会输出Server: nginx有时出于安全考虑需要隐藏。实操心得清除Server头是个好习惯但要注意一些安全扫描工具或运维监控可能依赖这个头来识别服务器类型。你可以选择性地清除或者用more_set_headers将其改成一个无意义的值。3.2 请求头操作more_set_input_headers与more_clear_input_headers这两个指令用于处理Nginx接收到的、即将发送给上游服务器的请求头。它们在rewrite或access阶段早期生效。more_set_input_headers设置或覆盖请求头常用于向下游服务传递身份信息、链路追踪ID等。more_set_input_headers X-Real-IP: $remote_addr; more_set_input_headers X-Forwarded-For: $proxy_add_x_forwarded_for;这里我们设置了标准的代理头。$remote_addr是客户端真实IP$proxy_add_x_forwarded_for会在已有的X-Forwarded-For列表后追加当前客户端IP。一个更复杂的场景是从Cookie中提取会话信息并作为头传递给后端APImore_set_input_headers X-User-Token: $cookie_token;more_clear_input_headers清除请求头这个指令可以移除客户端发来的某些请求头防止其被传递到上游。例如清除可能干扰后端应用的冗余头或测试头more_clear_input_headers Accept-Encoding; # 谨慎使用可能影响压缩 more_clear_input_headers X-Debug-Mode;重要警告清除Accept-Encoding这样的标准头是极其危险的它会阻止Nginx或上游进行Gzip压缩显著增加带宽消耗和延迟。除非你有非常特殊的理由否则不要这样做。3.3 指令的作用阶段与执行顺序陷阱这是最容易踩坑的地方。Nginx处理请求像一条流水线模块指令在不同阶段执行。指令主要作用阶段说明more_set_input_headersrewrite阶段早期修改发往上游的请求头。more_clear_input_headersrewrite阶段早期清除发往上游的请求头。more_set_headersheader_filter阶段修改发送给客户端的响应头。more_clear_headersheader_filter阶段清除发送给客户端的响应头。顺序陷阱示例 假设你在location块中同时使用了proxy_set_headerNginx原生和more_set_input_headers来设置同一个头。location /api { proxy_set_header X-API-Version 2.0; more_set_input_headers X-API-Version: 1.0; proxy_pass http://backend; }最终发往上游的X-API-Version值会是1.0还是2.0答案是1.0。因为more_set_input_headers在rewrite阶段执行而proxy_set_header的执行时机可能更晚在请求发送前并且后者可能会被前者覆盖。最佳实践是在同一个上下文中统一使用一种方式来管理头部避免混用造成不可预期的结果。4. 生产环境实战六大场景与避坑指南理论说再多不如看实战。下面我结合几个最常见的生产场景展示如何运用headers-more-nginx-module解决问题并附上我踩过的坑。4.1 场景一统一安全响应头这是该模块最典型的用途。你可以在http或server块中全局配置为所有站点添加安全头。http { # 使用more_clear_headers先清除可能由上游设置的不安全旧值 more_clear_headers X-Powered-By; more_clear_headers Server; server { listen 80; server_name example.com; # 为所有成功响应(2xx, 3xx)设置安全头 more_set_headers -s 200 301 302 X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff X-XSS-Protection: 1; modeblock Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: geolocation(), microphone(), camera() ; # 为错误页面也设置 more_set_headers -s 404 500 X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff ; } }避坑点Permissions-Policy前身是Feature-Policy的值需要根据你的业务需求仔细定制直接照抄可能会禁用你网站需要的功能如上传需要摄像头。4.2 场景二基于条件的缓存控制你的静态资源服务器可能由不同语言编写返回的Cache-Control头五花八门。你可以用Nginx统一管理。location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { proxy_pass http://static_backend; # 首先清除上游可能设置的不一致的缓存头 more_clear_headers Cache-Control Expires Pragma; # 然后根据文件类型和路径设置统一的、强缓存策略 if ($uri ~* \.(css|js)$) { more_set_headers Cache-Control: public, max-age31536000, immutable; } if ($uri ~* \.(jpg|jpeg|png|gif|ico)$) { more_set_headers Cache-Control: public, max-age2592000; } }避坑点more_clear_headers和more_set_headers在同一个location内是顺序执行的。一定要先清除再设置。另外注意if指令在Nginx中的性能问题和上下文限制对于简单的模式匹配使用map指令或多个location块可能是更优解。4.3 场景三全链路追踪与请求标识在微服务架构下一个请求会经过多个服务一个唯一的Request-ID对于问题排查至关重要。http { # 生成或传递Request-ID。优先使用客户端传来的没有则自己生成。 map $http_x_request_id $req_id { default $http_x_request_id; $request_id; # $request_id是Nginx内置变量唯一 } server { more_set_input_headers X-Request-ID: $req_id; # 将ID也放在响应头里方便客户端调试 more_set_headers X-Request-ID: $req_id; location / { proxy_pass http://backend; # 确保ID传递给上游 proxy_set_header X-Request-ID $req_id; } } }这里展示了more_set_input_headers和原生proxy_set_header的配合。more_set_input_headers确保了在请求处理的早期阶段就设置了头而proxy_set_header是代理指令确保在转发时携带。两者设置相同的值双保险。4.4 场景四API版本管理与灰度发布通过请求头来控制流量路由到不同版本的后端。# 定义一个map根据请求头决定上游组 map $http_x_api_version $backend_pool { default backend_v1; v2 backend_v2; beta backend_beta; } upstream backend_v1 { server 10.0.1.1; } upstream backend_v2 { server 10.0.1.2; } upstream backend_beta { server 10.0.1.3; } server { location /api { set $upstream $backend_pool; proxy_pass http://$upstream; # 可选将版本头继续传递给后端方便后端日志记录 more_set_input_headers X-API-Version: $http_x_api_version; } }4.5 场景五错误页面的自定义与安全统一错误页面的响应头避免暴露内部信息。error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location /404.html { internal; # 标记为内部位置防止直接访问 more_clear_headers Cache-Control; # 清除可能由root指令继承的头 more_set_headers Cache-Control: no-cache, no-store, must-revalidate; more_set_headers Content-Type: text/html; charsetutf-8; } location /50x.html { internal; more_clear_headers Cache-Control; more_set_headers Cache-Control: no-cache; more_set_headers Content-Type: text/html; charsetutf-8; }关键点对于internal内部定位的error_pagemore_set_headers依然有效这允许你为错误页面单独定义缓存策略和内容类型。4.6 场景六防御性编程与头信息清洗来自公网的请求可能包含任何奇怪的、甚至恶意的头信息。你可以做一个基础的清洗。location / { # 移除一些常见的、可能用于攻击或信息收集的冗余/自定义头 more_clear_input_headers X-Forwarded-Host; more_clear_input_headers X-Original-URL; more_clear_input_headers X-Rewrite-URL; more_clear_input_headers X-HTTP-Method-Override; # 除非你明确需要 # 但务必保留标准的代理头和安全头 # more_set_input_headers X-Real-IP: $remote_addr; # 应保留或设置 proxy_pass http://backend; }这个操作需要非常小心。过度清洗可能会破坏正常的应用功能如某些框架依赖特定的自定义头。务必在充分测试后进行。5. 高级技巧与性能调优当你熟练使用基本功能后下面这些技巧能让你的配置更强大、更高效。5.1 巧用变量与Nginx内置函数headers-more-nginx-module的指令值支持丰富的Nginx变量和部分函数这极大地扩展了其能力。时间戳more_set_headers X-Response-Time: $time_iso8601;请求信息more_set_headers X-Request-Method: $request_method;条件组合你可以结合map指令实现复杂的逻辑。map $scheme$http_user_agent $cache_control { ~*https.*Chrome public, max-age3600; default no-cache; } server { more_set_headers Cache-Control: $cache_control; }这个例子为使用Chrome浏览器并通过HTTPS访问的用户设置了不同的缓存策略。5.2 模块指令的性能影响评估任何指令的执行都会消耗CPU时间。headers-more-nginx-module的性能开销主要来自字符串匹配和拷贝操作。以下是一些优化建议作用域最小化将指令放在最需要的location块中而不是全局的http块。Nginx配置的匹配是自上而下的减少不必要的匹配能提升性能。减少正则表达式在more_clear_headers或条件匹配中尽量避免使用复杂的正则表达式。简单的字符串匹配更快。合并指令尽可能将多个头的设置合并到一个more_set_headers指令中这比写多个单独的指令效率稍高。预编译值对于固定的头值直接写死字符串。对于需要计算的使用map或set指令在更早的阶段将结果存入变量然后在more_set_headers中直接引用变量。5.3 与其他模块的协同工作headers-more-nginx-module可以和其他模块完美配合。与ngx_http_sub_module配合在修改响应体内容的同时修改响应头。例如替换页面中的品牌文字并同时修改X-Powered-By头。与ngx_http_lua_moduleOpenResty配合这是终极组合。你可以用Lua代码实现极其复杂的头部处理逻辑然后在适当的阶段调用ngx.header或headers_more提供的Lua API。例如根据请求参数、数据库查询结果来动态设置响应头。6. 常见问题排查与解决方案即使配置正确你也可能会遇到一些奇怪的问题。下面是我遇到过的典型案例。6.1 问题指令不生效头信息没有被修改或清除排查步骤检查模块是否加载执行nginx -V确认编译参数或检查error.log是否有模块加载失败的信息。检查指令作用域确认more_set_headers等指令是写在http,server,location还是if块中。在if块中使用这些指令有时会因Nginx的执行阶段问题而失效这是一个著名的坑。尽可能避免在if块内使用该模块的指令改用map或多个location匹配。检查执行阶段记住more_set_input_headers修改的是发往上游的请求头你在浏览器的开发者工具里是看不到的。要验证它需要在后端应用日志中查看接收到的头。同理more_set_headers修改的是发给客户端的响应头应该在浏览器开发者工具的“网络”选项卡中查看。检查冲突指令是否有原生的add_header或proxy_hide_header指令写在后面覆盖了headers-more模块的效果Nginx配置是顺序执行的后出现的指令可能覆盖前者。查看错误日志Nginx的error.log默认位于/usr/local/nginx/logs/error.log是排查问题的第一现场。使用tail -f error.log并重载配置观察是否有语法错误或运行时警告。6.2 问题动态模块加载失败 “module is not binary compatible”原因与解决这几乎总是因为动态模块.so文件与当前运行的Nginx二进制文件不是用完全一致的Nginx源码版本、编译器版本和编译选项生成的。解决方案重新编译最根本的方法。下载与你当前运行Nginx完全一致版本的源码用相同的./configure参数重新编译动态模块。使用静态编译如果对动态模块没有强需求转为静态编译一劳永逸。使用包管理器某些Linux发行版如Debian/Ubuntu提供了nginx-extras包其中预编译包含了headers-more模块。这是最省事的方式但版本可能不是最新的。6.3 问题修改了请求头但上游服务没收到排查思路确认指令位置more_set_input_headers必须出现在proxy_pass,fastcgi_pass等代理指令之前因为它在请求转发前的阶段生效。检查变量值确保你用来设置头值的变量如$cookie_token,$arg_key在当前请求上下文中是存在的、有值的。可以通过more_set_headers将一个调试头如X-Debug-Var: $your_variable输出到响应中来验证变量值。上游是否覆盖有些上游应用框架如某些Java、Python框架可能会在接收到请求后重新解析或覆盖掉来自代理的头信息。这超出了Nginx的控制范围需要检查上游应用的配置。集成headers-more-nginx-module的过程本质上是对Nginx处理HTTP报文流程的一次深度理解。从最初的编译选型到每个指令作用阶段的把握再到生产环境中各种场景的灵活运用每一步都需要结合具体业务深思熟虑。这个模块本身不复杂但它赋予你的能力能让你在架构层面更优雅地解决安全问题、运维问题和业务问题。记住任何强大的工具都需要配以清晰的思路和严谨的测试尤其是在直接操作HTTP协议层的时候。

相关新闻

从万能密码到SQL注入:原理、靶场实战与安全防御全解析

从万能密码到SQL注入:原理、靶场实战与安全防御全解析

1. 从“万能密码”说起:一个经典的网络安全入门案例如果你刚开始接触网络安全,尤其是Web安全方向,那么“万能密码”几乎是一个绕不开的起点。我第一次在本地靶场里输入admin or 11并成功登录后台时,那种感觉既兴奋又后怕。兴奋的是…

2026/8/13 6:10:49 阅读更多 →
C# Socket通信系统构建:从心跳机制到粘包处理的完整实践

C# Socket通信系统构建:从心跳机制到粘包处理的完整实践

1. 项目概述:从零构建一个健壮的C# Socket通信系统最近在做一个需要设备间稳定通信的项目,Socket编程这个老话题又被我重新捡了起来。虽然现在各种RPC框架、消息队列满天飞,但当你需要处理底层网络字节流、追求极致的可控性和性能&#xff0c…

2026/8/13 6:10:49 阅读更多 →
SmartGit(Git管理工具)

SmartGit(Git管理工具)

链接:https://pan.quark.cn/s/b508cc9d2ae2SmartGit是一款图形化的Git客户端,支持 GitHub、Bitbucket 和 GitLab。该客户端软件允许您以最少的努力访问在线存储库、进行更改和推送新的提交。Git 是一种广泛使用的修订控制系统,它允许程序员有…

2026/8/13 6:10:49 阅读更多 →

最新新闻

Ubuntu 20.04系统完整备份与克隆:使用Systemback制作可启动ISO镜像

Ubuntu 20.04系统完整备份与克隆:使用Systemback制作可启动ISO镜像

1. 项目概述与核心价值如果你和我一样,常年把Ubuntu作为主力开发或生产环境,那么最头疼的事情之一,可能就是“系统迁移”或“环境复制”。辛辛苦苦配置了几个月的开发环境,装了各种IDE、数据库、中间件,调整了无数个系…

2026/8/13 7:03:13 阅读更多 →
Ubuntu 22.04.3 LTS 从安装到生产力:完整配置指南与避坑实践

Ubuntu 22.04.3 LTS 从安装到生产力:完整配置指南与避坑实践

1. 项目概述:为什么Ubuntu 22.04.3值得你花时间 如果你刚拿到一台新电脑,或者厌倦了旧系统的臃肿,想找一个稳定、高效且完全免费的操作系统,那么Ubuntu 22.04.3 LTS(Jammy Jellyfish)绝对是一个绕不开的选…

2026/8/13 7:03:13 阅读更多 →
本地部署InternLM2大模型与Lagent智能体:从环境搭建到工具调用的实践指南

本地部署InternLM2大模型与Lagent智能体:从环境搭建到工具调用的实践指南

1. 从“玩具”到“工具”:为什么我们要动手跑大模型Demo?如果你最近关注AI,肯定被各种“大模型”刷屏了。从ChatGPT到文心一言,再到层出不穷的开源模型,感觉不聊两句大模型,都快跟不上时代了。但说实话&…

2026/8/13 7:03:13 阅读更多 →
CPU核心架构深度解析:从运算器与控制器到现代多核与缓存设计

CPU核心架构深度解析:从运算器与控制器到现代多核与缓存设计

1. 项目概述:从“黑盒子”到“指挥中心”当我们谈论一台电脑的性能时,最常挂在嘴边的就是“CPU”了。它就像是计算机的大脑,负责执行程序指令、处理数据、协调各个部件的工作。但你是否想过,这个指甲盖大小、集成了数十亿晶体管的…

2026/8/13 7:03:13 阅读更多 →
FLAC3D与Tecplot数据联动及岩土工程可视化实践

FLAC3D与Tecplot数据联动及岩土工程可视化实践

1. FLAC3D与Tecplot数据联动的核心价值在岩土工程数值模拟领域,FLAC3D作为行业标杆软件,其计算结果的可视化呈现一直是工程师们的刚需。而Tecplot凭借其强大的后处理能力,特别是对三维数据的渲染和动画制作功能,成为FLAC3D计算结果…

2026/8/13 7:03:13 阅读更多 →
大模型实战指南:从环境部署、LoRA微调到RAG应用开发

大模型实战指南:从环境部署、LoRA微调到RAG应用开发

1. 项目概述:从理论到实战的跨越最近几年,大模型的热度居高不下,从最初的文本生成到现在的多模态理解,技术迭代的速度让人应接不暇。但很多朋友,包括我自己在初期,都面临一个尴尬的局面:看了无数…

2026/8/13 7:02:13 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →