nginx-build

无缝 nginx 构建工具。「Seamless nginx builder」

Github stars Tracking Chart

nginx-build

nginx-build - provides a command to build nginx seamlessly.

gif

Requirements

  • git and hg for downloading 3rd party modules
  • patch for applying patch to nginx

Build Support

Installation

go install github.com/cubicdaiya/nginx-build@latest

Quick Start

nginx-build -d work

Custom Configuration

nginx-build provides a mechanism for customizing configuration for building nginx.

Configuration for building nginx

Prepare a configure script like the following.

#!/bin/sh

./configure \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \

Give this file to nginx-build with -c.

$ nginx-build -d work -c configure.example

About --add-module and --add-dynamic-module

nginx-build allows to use --add-module.

$ nginx-build \
-d work \
--add-module=/path/to/ngx_http_hello_world

Also, nginx-build allows to use --add-dynamic-module.

$ nginx-build \
-d work \
--add-dynamic-module=/path/to/ngx_http_hello_world

Embedding zlib statically

Give -zlib to nginx-build.

$ nginx-build -d work -zlib

-zlibversion is an option to set a version of zlib.

Embedding PCRE statically

Give -pcre to nginx-build.

$ nginx-build -d work -pcre

-pcreversion is an option to set a version of PCRE.

Embedding OpenSSL statically

Give -openssl to nginx-build.

$ nginx-build -d work -openssl

-opensslversion is an option to set a version of OpenSSL.

Embedding LibreSSL statically

Give -libressl to nginx-build.

$ nginx-build -d work -libressl

-libresslversion is an option to set a version of LibreSSL.

Embedding 3rd-party modules

nginx-build provides a mechanism for embedding 3rd-party modules.
Prepare a json file below.

[
  {
    "name": "ngx_http_hello_world",
    "form": "git",
    "url": "https://github.com/cubicdaiya/ngx_http_hello_world"
  }
]

Give this file to nginx-build with -m.

$ nginx-build -d work -m modules.json.example

Embedding 3rd-party module dynamically

Give true to dynamic.

[
  {
    "name": "ngx_http_hello_world",
    "form": "git",
    "url": "https://github.com/cubicdaiya/ngx_http_hello_world",
    "dynamic": true
  }
]

Provision for 3rd-party module

There are some 3rd-party modules expected provision. nginx-build provides the options such as shprov and shprovdir for this problem.
There is the example configuration below.

[
  {
    "name": "njs/nginx",
    "form": "hg",
    "url": "https://hg.nginx.org/njs",
    "shprov": "./configure && make",
    "shprovdir": ".."
  }
]

Applying patch before building nginx

nginx-build provides the options such as -patch and -patch-opt for applying patch to nginx.

nginx-build \
 -d work \
 -patch something.patch \
 -patch-opt "-p1"

Idempotent build

nginx-build supports a certain level of idempotent build of nginx.
If you want to ensure a build of nginx idempotent and do not want to build nginx as same as already installed nginx,
give -idempotent to nginx-build.

$ nginx-build -d work -idempotent

-idempotent ensures an idempotent by checking the software versions below.

  • nginx
  • PCRE
  • zlib
  • OpenSSL

On the other hand, -idempotent does not cover versions of 3rd party modules and dynamic linked libraries.

Build OpenResty

nginx-build supports to build OpenResty.

$ nginx-build -d work -openresty -pcre -openssl

If you don't install PCRE and OpenSSL on your system, it is required to add the option -pcre and -openssl.

And there is the limitation for the support of OpenResty.
nginx-build does not allow to use OpenResty's unique configure options directly.
If you want to use OpenResty's unique configure option, Configuration for building nginx is helpful.

Build freenginx

nginx-build supports to build freenginx.

$ nginx-build -d work -freenginx -openssl

If you don't install OpenSSL on your system, it is required to add the option -openssl.

Main metrics

Overview
Name With Ownercubicdaiya/nginx-build
Primary LanguageGo
Program languageMakefile (Language Count: 4)
Platform
License:MIT License
所有者活动
Created At2014-05-22 12:29:12
Pushed At2025-06-07 05:46:03
Last Commit At2025-06-07 14:45:04
Release Count91
Last Release Namev0.15.1 (Posted on )
First Release Namev0.0.1 (Posted on )
用户参与
Stargazers Count416
Watchers Count20
Fork Count48
Commits Count1k
Has Issues Enabled
Issues Count19
Issue Open Count2
Pull Requests Count156
Pull Requests Open Count3
Pull Requests Close Count23
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private