Last changed
Contact our team to test out this image for free. Please also indicate any other images you would like to evaluate.
Minimal Wolfi-based nginx HTTP server with OpenTelemetry observability integration and FIPS 140-2 hardened cryptography
Chainguard Containers are regularly-updated, secure-by-default container images.
For those with access, this container image is available on cgr.dev:
Be sure to replace the ORGANIZATION placeholder with the name used for your organization's private repository within the Chainguard Registry.
Chainguard's nginx-otel-fips container image extends the standard nginx functionality with OpenTelemetry instrumentation for distributed tracing and FIPS 140-2 hardened cryptography. It maintains all the compatibility features of the standard nginx Chainguard Container.
The nginx-otel-fips Chainguard Container ships with a validated redistribution of OpenSSL's FIPS provider module. For more on FIPS support in Chainguard Containers, consult the guide on FIPS-enabled Chainguard Containers on Chainguard Academy.
Like the standard nginx Chainguard Container, this image runs as a non-root nonroot user (UID/GID 65532) and does not require privilege escalation.
The default port for the nginx-otel-fips Chainguard Container is 8080, rather than 80.
By default, the container only listens on IPv4. You can add IPv6 support by mounting a configuration file with IPv6 listeners:
This image includes the nginx OpenTelemetry module (ngx_otel_module) which enables distributed tracing with FIPS-compliant cryptographic operations. The module is available as an opt-in configuration and supports:
This image includes all nginx modules from the upstream nginx:otel image for feature parity:
Two variants are available following nginx's release strategy:
latestStarting the container gives the following warning:
This warning indicates the container is already running as the nonroot user, so the directive has no effect. The directive is included for compatibility with configurations that may run the container as root.
The entrypoint for the nginx-otel-fips Chainguard Container is /docker-entrypoint.sh. Commands run as part of docker run will be passed as arguments to nginx.
The nginx-otel-fips Chainguard Container provides nginx with OpenTelemetry capabilities and FIPS-compliant cryptography. To try out the basic image:
After starting the container, navigate to localhost:8080 in your web browser to see the default nginx welcome page.
To enable OpenTelemetry tracing with FIPS-compliant cryptography, you need to include the module and configure the tracing endpoint. Here's a basic example:
Here's a complete example running nginx-otel-fips with Jaeger for trace collection:
First, start Jaeger:
Create an nginx configuration file:
Run nginx-otel-fips with the test configuration:
Generate some traffic:
Check that your nginx-test service has been registered with Jaeger at http://localhost:16686/api/services
View traces at http://localhost:16686/api/traces/service=nginx-test
Like the standard nginx container, you can run nginx-otel-fips with a read-only filesystem:
Chainguard's free tier of Starter container images are built with Wolfi, our minimal Linux undistro.
All other Chainguard Containers are built with Chainguard OS, Chainguard's minimal Linux operating system designed to produce container images that meet the requirements of a more secure software supply chain.
The main features of Chainguard Containers include:
For cases where you need container images with shells and package managers to build or debug, most Chainguard Containers come paired with a development, or -dev, variant.
In all other cases, including Chainguard Containers tagged as :latest or with a specific version number, the container images include only an open-source application and its runtime dependencies. These minimal container images typically do not contain a shell or package manager.
Although the -dev container image variants have similar security features as their more minimal versions, they include additional software that is typically not necessary in production environments. We recommend using multi-stage builds to copy artifacts from the -dev variant into a more minimal production image.
To improve security, Chainguard Containers include only essential dependencies. Need more packages? Chainguard customers can use Custom Assembly to add packages, either through the Console, chainctl, or API.
To use Custom Assembly in the Chainguard Console: navigate to the image you'd like to customize in your Organization's list of images, and click on the Customize image button at the top of the page.
Refer to our Chainguard Containers documentation on Chainguard Academy. Chainguard also offers VMs and Libraries — contact us for access.
This software listing is packaged by Chainguard. The trademarks set forth in this offering are owned by their respective companies, and use of them does not imply any affiliation, sponsorship, or endorsement by such companies.
Chainguard container images contain software packages that are direct or transitive dependencies. The following licenses were found in the "latest" tag of this image:
Apache-2.0
Artistic-1.0-Perl
BSD-1-Clause
BSD-2-Clause
BSD-3-Clause
BSD-4-Clause-UC
CC-PDDC
For a complete list of licenses, please refer to this Image's SBOM.
Software license agreementThis is a FIPS validated image for FedRAMP compliance.
This image is STIG hardened and scanned against the DISA General Purpose Operating System SRG with reports available.
Learn more about STIGsGet started with STIGs