@@ -24,13 +24,47 @@ The module implements following specifications:
2424
2525### Requirements
2626
27+ - NGINX sources, 1.25.0 or later.
2728- Regular NGINX build dependencies: C compiler, make, PCRE2, Zlib
2829- System-wide installation of OpenSSL 1.1.1 or later
2930- Rust toolchain (1.81.0 or later)
31+ - ` pkg-config ` or ` pkgconf `
3032- [ libclang] for rust-bindgen
3133
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+
3243[ libclang ] : https://rust-lang.github.io/rust-bindgen/requirements.html
3344
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+
3468### Building
3569
3670One 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
67101variables passed to the ` cargo build ` or ` make ` commands.
68102Currently accepted options are:
69103
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.
73107
74108Example:
75109
@@ -259,7 +293,7 @@ Enables or disables verification of the ACME server certificate.
259293
260294** Syntax:** state_path ` path ` | ` off `
261295
262- ** Default:** acme _ ` name ` or ` $NGX_ACME_STATE_PREFIX ` /acme _ ` name `
296+ ** Default:** acme \_ ` name ` or ` $NGX_ACME_STATE_PREFIX ` /acme \_ ` name `
263297
264298** Context:** acme_issuer
265299
0 commit comments