mirror of
https://github.com/hoellen/dockerfiles.git
synced 2025-04-20 20:39:18 +00:00
56 lines
2.8 KiB
Markdown
56 lines
2.8 KiB
Markdown
## wonderfall/boring-nginx
|
|
|
|

|
|
|
|
#### What is this?
|
|
This is nginx statically linked against BoringSSL, with embedded Brotli support.
|
|
|
|
#### Features
|
|
- Based on Alpine Linux.
|
|
- nginx built against **BoringSSL**.
|
|
- Built using hardening gcc flags.
|
|
- TTP/2 (+NPN) support.
|
|
- Brotli compression support (and configured).
|
|
- No root master process.
|
|
- AIO Threads support.
|
|
- No unnessary modules (except fastcgi).
|
|
- PCRE-jit enabled.
|
|
- Strong configurations included.
|
|
- Anonymous webserver signature (headers-more).
|
|
- ngxpasswd : generates a htpasswd file.
|
|
- ngxproxy : generates a proxy virtual host file.
|
|
|
|
#### Notes
|
|
- It is required to change the `listen` directive to 8000/4430 instead of 80/443.
|
|
- Linux 3.17+, and the latest Docker stable are recommended.
|
|
- BoringSSL is naming ECDH curves differently, some modifications will be required if you want to use your own SSL/TLS config file. For example, `secp384r1` (OpenSSL, LibreSSL) is `P-384` (BoringSSL). BoringSSL does support multiple curves with its implementation of `SSL_CTX_set1_curves_list()`, an example is provided in the default `/etc/nginx/confssl_params`. `X25519` is actually the safest curve you can use so it should be the first curve in your list.
|
|
- BoringSSL can use cipher groups : a group is defined by brackets and ciphers are separated by `|` like this : `[cipher1|cipher2|cipher3]`. Ciphers in a group are considered equivalent on the server-side and let the client decide which cipher is the best. This can be useful when using ChaCha20, because AES remains faster than ChaCha20 on AES-NI devices.
|
|
|
|
#### Volumes
|
|
- **/sites-enabled** : vhosts files (*.conf)
|
|
- **/conf.d** : additional configuration files
|
|
- **/certs** : SSL/TLS certificates
|
|
- **/var/log/nginx** : nginx logs
|
|
- **/passwds** : authentication files
|
|
- **/www** : put your websites there
|
|
|
|
#### Build-time variables
|
|
- **NGINX_VERSION** : version of nginx
|
|
- **GPG_NGINX** : fingerprint of signing key package
|
|
- **BUILD_CORES** : number of cores used during compilation
|
|
|
|
#### Environment variables
|
|
- **GID** : nginx group id *(default : 991)*
|
|
- **UID** : nginx user id *(default : 991)*
|
|
|
|
#### How to use it?
|
|
https://github.com/hardware/mailserver/wiki/Reverse-proxy-configuration
|
|
|
|
You can use `ngxproxy` to generate a *vhost* through an easy process : `docker exec -ti nginx ngxproxy`. `ngxpasswd` can generate htpasswd files : `docker exec -ti nginx ngxpasswd`. Both utilites are interactive so you won't feel lost.
|
|
|
|
Some configuration files located in `/etc/nginx/conf` are already provided, you can use them with the `include` directive.
|
|
|
|
- `ssl_params` : Provides a nice balance between compatibility and security.
|
|
- `headers_params` : HSTS (+ preload), XSS protection, etc.
|
|
- `proxy_params` : use with `proxy_pass`.
|