{"id":13697601,"url":"https://github.com/vision5/ngx_devel_kit","last_synced_at":"2026-02-22T14:41:17.618Z","repository":{"id":793560,"uuid":"492054","full_name":"vision5/ngx_devel_kit","owner":"vision5","description":"Nginx Development Kit - an Nginx module that adds additional generic tools that module developers can use in their own modules","archived":false,"fork":false,"pushed_at":"2025-02-20T11:21:17.000Z","size":172,"stargazers_count":1025,"open_issues_count":1,"forks_count":204,"subscribers_count":79,"default_branch":"master","last_synced_at":"2026-02-13T01:41:13.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vision5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-01-28T12:40:12.000Z","updated_at":"2026-02-11T02:07:17.000Z","dependencies_parsed_at":"2024-06-18T16:40:26.615Z","dependency_job_id":"caacc277-9311-422e-b94e-5c5b538cce95","html_url":"https://github.com/vision5/ngx_devel_kit","commit_stats":{"total_commits":99,"total_committers":16,"mean_commits":6.1875,"dds":0.7272727272727273,"last_synced_commit":"91e30eb05085e7f9762f130cbb883a0e753cf74d"},"previous_names":["simplresty/ngx_devel_kit","simpl/ngx_devel_kit"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/vision5/ngx_devel_kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vision5%2Fngx_devel_kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vision5%2Fngx_devel_kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vision5%2Fngx_devel_kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vision5%2Fngx_devel_kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vision5","download_url":"https://codeload.github.com/vision5/ngx_devel_kit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vision5%2Fngx_devel_kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29716358,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T13:30:57.152Z","status":"ssl_error","status_checked_at":"2026-02-22T13:30:28.561Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T18:01:00.643Z","updated_at":"2026-02-22T14:41:17.564Z","avatar_url":"https://github.com/vision5.png","language":"C","funding_links":[],"categories":["Third Modules","C","Lua and OpenResty ecosystem"],"sub_categories":["C Modules"],"readme":"Name\n====\n\nNginx Development Kit (NDK)\n\nTable of Contents\n=================\n\n* [Name](#name)\n* [Synopsis](#synopsis)\n* [Status](#status)\n* [Features](#features)\n* [Design](#design)\n    * [modular](#modular)\n    * [auto-generated \u0026 easily extensible](#auto-generated--easily-extensible)\n* [Usage for users](#usage-for-users)\n    * [Building as a dynamic module](#building-as-a-dynamic-module)\n* [Usage for developers](#usage-for-developers)\n    * [Warning: using NDK_ALL](#warning-using-ndk_all)\n* [Modules using NDK](#modules-using-ndk)\n* [TODO](#todo)\n* [License](#license)\n* [Contributing / Feedback](#contributing--feedback)\n* [Authors](#authors)\n* [Special Thanks](#special-thanks)\n\nSynopsis\n========\n\nThe NDK is an Nginx module that is designed to extend the core functionality of the\nexcellent Nginx webserver in a way that can be used as a basis of other Nginx modules.\n\nIt has functions and macros to deal with generic tasks that don't currently have\ngeneric code as part of the core distribution.  The NDK itself adds few features\nthat are seen from a user's point of view - it's just designed to help reduce the\ncode that Nginx module developers need to write.\n\nNginx module developers wishing to use any of the features in the NDK should specify\nthat the NDK is a dependency of their module, and that users will need to compile\nit as well when they compile their own modules.  They will also need to declare in\ntheir own modules which features of the NDK they wish to use (explained below).\n\nIf you are not an Nginx module developer, then the only useful part of this project\nwill be the 'usage for users' section below.\n\n[Back to TOC](#table-of-contents)\n\nStatus\n======\n\nThe NDK is now considered to be stable. It is already being used in quite a few third\nparty modules (see list below).\n\n[Back to TOC](#table-of-contents)\n\nFeatures\n========\n\n* additional conf_set functions for regexes, complex/script values, paths...\n* macros to simplify tasks like checking for NULL values when doing ngx_array_push\n* patches to the main source code\n* ngx_auto_lib_core generic external library handler is included (see separate readme)\n\n[Back to TOC](#table-of-contents)\n\nDesign\n======\n\nmodular\n-------\n\nThe kit itself is designed in a modular way, so that only the required code is compiled.\nIt's possible to add just a single NDK module, a few or all of them.\n\n[Back to TOC](#table-of-contents)\n\nauto-generated \u0026 easily extensible\n----------------------------------\n\nMany of the macros available in the NDK are auto-generated from simple configuration\nfiles.  This makes creating similar macros for your own code very simple - it's usually\njust the case of adding an extra line to a config file and re-running the build script.\n\n[Back to TOC](#table-of-contents)\n\nUsage for users\n===============\n\nIf another Nginx module you wish to use specifies that the NDK is a dependency, you\nwill need to do the following :\n\n1. download the source (https://github.com/simpl/ngx_devel_kit)\n2. unpack the source (tar -xzf $name)\n3. compile Nginx with the following extra option `--add-module=/path/to/ngx_devel_kit`.\n\ne.g.\n\n```bash\n./configure --add-module=/path/to/ngx_devel_kit \\\n            --add-module=/path/to/another/module\n```\n\n[Back to TOC](#table-of-contents)\n\nBuilding as a dynamic module\n----------------------------\n\nStarting from NGINX 1.9.11, you can also compile this module as a dynamic module, by using the `--add-dynamic-module=PATH` option instead of `--add-module=PATH` on the\n`./configure` command line above. And then you can explicitly load the module in your `nginx.conf` via the [load_module](http://nginx.org/en/docs/ngx_core_module.html#load_module)\ndirective, for example,\n\n```nginx\nload_module /path/to/modules/ndk_http_module.so;\nload_module /path/to/another/module.so;\n```\n\n[Back to TOC](#table-of-contents)\n\nUsage for developers\n====================\n\nTo use the NDK in your own module, you need to add the following:\n\n1. add this line to your module\n\n```C\n#include    \u003cndk.h\u003e\n```\n\nNote: since the NDK includes the following lines\n\n```C\n#include    \u003cngx_config.h\u003e\n#include    \u003cngx_core.h\u003e\n#include    \u003cngx_http.h\u003e\n```\n\nyou can replace these with the single include above.\n2. add the following line in the config file for your module:\n\n```bash\nhave=NDK_[module_name]  . auto/have\n```\n\nfor each NDK module that you wish to use (you need to include auto/have multiple\ntimes if you wish to use multiple NDK modules.\n\nNote: the old method of setting\n\n```config\nCFLAGS=\"$CFLAGS -DNDK_[module_name]\"\n```\n\nis now deprecated. It will still work, but results in unnecessary lines being\ndisplayed when compiling Nginx.\n\n[Back to TOC](#table-of-contents)\n\nWarning: Using NDK_ALL\n----------------------\n\nYou can also set `NDK_ALL` to include all the NDK modules.  This is primarily as\na convenience in the early stages of development of another module. However,\n\nDO NOT LEAVE `NDK_ALL` IN YOUR CONFIG FILE WHEN PUBLISHING\n\nAlthough the NDK is fairly small now, it could in time become a large repository\nof code that would, if using NDK_ALL, result in considerably more code being compiled\nthan is necessary.\n\n[Back to TOC](#table-of-contents)\n\nModules using NDK\n=================\n\nThe following 3rd-party modules make use of NDK.\n\n* [ngx_http_lua_module](https://github.com/openresty/lua-nginx-module#readme)\n* [ngx_http_set_misc_module](https://github.com/openresty/set-misc-nginx-module#readme)\n* [ngx_http_encrypted_session_module](https://github.com/openresty/encrypted-session-nginx-module#readme)\n* [ngx_http_form_input_module](https://github.com/calio/form-input-nginx-module#readme)\n* [ngx_http_iconv_module](https://github.com/calio/iconv-nginx-module#readme)\n* [ngx_http_array_var_module](https://github.com/openresty/array-var-nginx-module#readme)\n\nIf you would like to add your module to this list, please let us know.\n\n[Back to TOC](#table-of-contents)\n\nTODO\n====\n\n* documentation for modules that don't already have it\n* additional phase-handler functions\n* generically testing for needing to add a handler\n* remove dependency of set_var on OpenSSL being compiled in\n* for backward compatability, add the ndk_macros\n\n[Back to TOC](#table-of-contents)\n\nLicense\n=======\n\nCopyright (c) 2010-2018, Marcus Clyne\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are\npermitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of\nconditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright notice, this list of\nconditions and the following disclaimer in the documentation and/or other materials\nprovided with the distribution.\n3. Neither the name of the copyright holder nor the names of its contributors may be used\nto endorse or promote products derived from this software without specific prior\nwritten permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS\nOR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\nEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\nGOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\nAND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n[Back to TOC](#table-of-contents)\n\nContributing / Feedback\n=======================\n\nIf you are an Nginx module developer, and have developed some functions that are\ngeneric in nature (or would be easily adapted to be so), then please send them to\nme at the address below, and I'll addmclyne to the kit.\n\n[Back to TOC](#table-of-contents)\n\nAuthor\n======\n\n[Marcus Clyne](https://github.com/mclyne)\n\n[Back to TOC](#table-of-contents)\n\n\nSpecial Thanks\n==============\n\nA special thanks goes to [Yichun Zhang](https://github.com/agentzh) for helping to maintain\nthis module.\n\n[Back to TOC](#table-of-contents)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvision5%2Fngx_devel_kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvision5%2Fngx_devel_kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvision5%2Fngx_devel_kit/lists"}