@@ -24,13 +24,47 @@ The module implements following specifications:
24
24
25
25
### Requirements
26
26
27
+ - NGINX sources, 1.25.0 or later.
27
28
- Regular NGINX build dependencies: C compiler, make, PCRE2, Zlib
28
29
- System-wide installation of OpenSSL 1.1.1 or later
29
30
- Rust toolchain (1.81.0 or later)
31
+ - ` pkg-config ` or ` pkgconf `
30
32
- [ libclang] for rust-bindgen
31
33
34
+ The NGINX and its dependency versions should match the ones you plan to deploy,
35
+ including any patches that change the API.
36
+
37
+ > [ !TIP]
38
+ > The module built against a specific release of unmodified NGINX Open Source
39
+ > with ` --with-compat --with-http_ssl_module ` is compatible with a corresponding
40
+ > release of NGINX Plus.
41
+ > Refer to https://www.f5.com/company/blog/nginx/compiling-dynamic-modules-nginx-plus
42
+
32
43
[ libclang ] : https://rust-lang.github.io/rust-bindgen/requirements.html
33
44
45
+ #### Important note on SSL libraries
46
+
47
+ It is important to ensure that the module uses the same SSL implementation as
48
+ NGINX. SSL contexts and certificate objects are passed between the module and
49
+ NGINX code, and any mismatches in types can cause memory issues and crashes.
50
+
51
+ The best way to guarantee this is to build both with a system-provided shared
52
+ library.
53
+
54
+ If you absolutely have to use an alternative SSL implementation, ensure that
55
+ the module uses it during build by setting appropriate
56
+ [ ` OPENSSL_* ` variables] ( https://docs.rs/openssl/latest/openssl/#manual ) for the
57
+ Rust bindings to OpenSSL. Check [ build-aws-lc.mk] ( build/build-aws-lc.mk ) and
58
+ [ build-aws-lc-static.mk] ( build/build-aws-lc-static.mk ) CI configurations for
59
+ examples.
60
+
61
+ Also, note that dynamic build of the module must use dynamic linking for the SSL
62
+ library. Static linking in that scenario will result in two copies of the
63
+ library code with independent global state.
64
+
65
+ See [ SSL library compatibility] ( https://github.com/nginx/nginx-acme/wiki/Compatibility#ssl-libraries )
66
+ in the project wiki for the state of support of alternative SSL implementations.
67
+
34
68
### Building
35
69
36
70
One way to build the module is to export a path to a configured NGINX source
@@ -67,9 +101,9 @@ auto/configure, all the module build-time options are set via environment
67
101
variables passed to the ` cargo build ` or ` make ` commands.
68
102
Currently accepted options are:
69
103
70
- - ` NGX_ACME_STATE_PREFIX ` : sets a default prefix for per-issuer state paths.
71
- If unset, state paths are created relative to the NGINX prefix directory.
72
- The prefix directory should exist and be readable to the worker processes.
104
+ - ` NGX_ACME_STATE_PREFIX ` : sets a default prefix for per-issuer state paths.
105
+ If unset, state paths are created relative to the NGINX prefix directory.
106
+ The prefix directory should exist and be readable to the worker processes.
73
107
74
108
Example:
75
109
@@ -262,7 +296,7 @@ Enables or disables verification of the ACME server certificate.
262
296
263
297
** Syntax:** state_path ` path ` | ` off `
264
298
265
- ** Default:** acme _ ` name ` or ` $NGX_ACME_STATE_PREFIX ` /acme _ ` name `
299
+ ** Default:** acme \_ ` name ` or ` $NGX_ACME_STATE_PREFIX ` /acme \_ ` name `
266
300
267
301
** Context:** acme_issuer
268
302
0 commit comments