Distroless NGINX with HTTP/3, QUIC, ECH and PQC supportπ
10K+
Production-ready, security-focused NGINX image with HTTP/3, QUIC, ECH and PQC support.
Important
The QuicTLS is now deprecated. I use OpenSSL, since this library natively supports OCSP, PQC, ECH and QUICβ οΈ
Important
NJS module has been removed due to security vulnerabilities in libxml2/libxslt dependenciesβ οΈ
Tip
You can find an example [configuration file](example.conf) in the repository for successfully configuring HTTP/3, ECH and PQCπ‘
Important
UID/GID changed to 10001 - it's [recommended](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for Kubernetes and prevents conflicts with system usersβ οΈ
Docker Hub:
ammnt/nginx
GitHub Container Registry:
ghcr.io/ammnt/nginx
docker run -d \
--name nginx \
-p 80:8080 \
-p 443:8443 \
ammnt/nginx
https://docs.docker.com/engine/security/rootless/β
services:
nginx:
image: ammnt/nginx:latest
user: "10001:10001"
read_only: true
privileged: false
tmpfs:
- /tmp:mode=1700,size=1G,noexec,nosuid,nodev,uid=10001,gid=10001
cap_drop:
- all
container_name: nginx
security_opt:
- no-new-privileges=true
- apparmor=docker-nginx
- seccomp=./nginx-seccomp.json
volumes:
- "./conf:/etc/nginx:ro"
...
apiVersion: v1
kind: Deployment
metadata:
name: nginx-pss-restricted
spec:
containers:
- name: nginx
image: ammnt/nginx:latest
securityContext:
capabilities:
drop:
- ALL
privileged: false
runAsUser: 10001
runAsGroup: 10001
seccompProfile:
type: RuntimeDefault
runAsNonRoot: true
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
...
nginx/
βββ π§ AGENTS.md # Dedicated file that guides AI coding agents
βββ π CODE_OF_CONDUCT.md # Code of Conduct for contributors
βββ π€ CONTRIBUTING.md # Contributing guidelines
βββ π cosign.pub # Public key for image signing (Sigstore/cosign)
βββ βοΈ default.conf # Default NGINX configuration
βββ π³ dive-ci.yml # Dive configuration for Docker image analysis
βββ π³ Dockerfile.template # Dockerfile template (dynamic generation)
βββ π .dockerignore # Files to exclude from Docker build context
βββ βοΈ .editorconfig # EditorConfig for consistent coding styles
βββ π§ .env # Environment variables configuration
βββ π example.conf # Example NGINX configuration
βββ βοΈ .gitattributes # Git attributes configuration
βββ π .github/ # GitHub-specific configuration
β βββ π dependabot.yml # Automated dependency updates
β βββ π ISSUE_TEMPLATE/ # Issue creation templates
β β βββ π bug_report.md # Bug report template
β β βββ βοΈ config.yml # Issue templates configuration
β β βββ π‘ feature_request.md # Feature request template
β βββ π·οΈ labeler.yml # PR labeler configuration
β βββ π PULL_REQUEST_TEMPLATE.md # Pull Request template
β βββ π workflows/ # GitHub Actions CI/CD pipelines
β βββ π¨ build.yml # Build and testing workflow
β βββ π codeql.yml # Static security analysis (CodeQL)
β βββ π·οΈ label.yml # Workflow for triage PR and apply labels
βββ π .gitignore # Git ignore rules
βββ β
hadolint.yaml # Hadolint configuration (Dockerfile linter)
βββ βοΈ LICENSE # License agreement
βββ π nginx.conf # Main NGINX configuration file
βββ π‘οΈ nginx-seccomp.json # Seccomp profile for NGINX security
βββ π¦ nginx.toml # Additional NGINX configuration (TOML format)
βββ π README.md # Main project documentation
βββ π SECURITY.md # Security policy and vulnerability reporting
βββ π trivy.yaml # Trivy configuration (vulnerability scanning)
scratch with zero bloat (SLSA Level 3 requirements)Found an issue or have an improvement?
Note: This image is designed for security-conscious production environments. For development purposes, consider using the official NGINX image with full debugging capabilities.
This project is open source and maintained with β€οΈ by ammntβ .
Content type
Image
Digest
sha256:dcc353c51β¦
Size
3.1 MB
Last updated
19 days ago
docker pull ammnt/nginx