1
0
Fork 0
mirror of https://github.com/nginx-proxy/nginx-proxy synced 2024-05-08 00:26:08 +02:00
Commit Graph

792 Commits

Author SHA1 Message Date
Nicolas Duchon eb4ed6d8e6
build: replace forego with goreman 2022-01-07 14:41:50 +01:00
Nicolas Duchon 53ef90a2f6
docs: nginx badge 1.21.4 -> 1.21.5 2022-01-06 17:12:36 +01:00
Nicolas Duchon ed7b17d9d7
Merge pull request #1856 from polarathene/tests/fix-container-networking
tests: Fix pytest container networking issues
2022-01-06 10:32:40 +01:00
Nicolas Duchon 6260c0265e
Merge pull request #1858 from nginx-proxy/dependabot/pip/test/requirements/requests-2.27.1
chore(deps): bump requests from 2.26.0 to 2.27.1 in /test/requirements
2022-01-06 10:24:17 +01:00
dependabot[bot] b9ac4b936e
chore(deps): bump requests from 2.26.0 to 2.27.1 in /test/requirements
Bumps [requests](https://github.com/psf/requests) from 2.26.0 to 2.27.1.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.26.0...v2.27.1)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-06 04:21:32 +00:00
Nicolas Duchon 780744f231
Merge pull request #1853 from nginx-proxy/dependabot/docker/nginx-1.21.5
chore(deps): bump nginx from 1.21.4 to 1.21.5
2021-12-31 13:58:44 +01:00
polarathene 6b3ee66783 chore: white-space housekeeping
Noticed some trailing white-space. Removed for consistency with the rest of the file.
2022-01-01 01:39:51 +13:00
polarathene 115461744b fix: Skip IPv6 when forced but not available + avoid `none` network
A test on raw IP addresses doesn't reach the existing IPv6 skip logic, added that to avoid a test failing when only IPv4 is available (eg: standard docker container networks).

Additionally some other tests set the `none` network and connecting to this fails as it's not allowed? Preventing that from happening resolves the final failing tests within containerized pytest.
2022-01-01 01:38:13 +13:00
Nicolas Duchon a96135b74d
Merge pull request #1848 from polarathene/tests/dhparam-followup
tests: Revise DH param tests
2021-12-31 13:27:50 +01:00
polarathene 04b0181980 fix: Ensure networks are actually connected to pytest container
The `network` object would never be in a list of network names (strings), and without `greedy=True` arg as the `docker-py` API docs note, the containers will not be part of the results, thus always returning an empty list which was not intended..

Now the network will properly match the current networks for pytest container, avoiding duplicate connect attempts, and the network list result will actually have containers to count when filtering by length.
2021-12-31 22:30:49 +13:00
polarathene 0e5d97a268 fix: Don't connect pytest container to networks when using host network
This is not compatible or required, since host networking is no longer isolated to container networks only.
2021-12-31 22:14:26 +13:00
polarathene b2b4c71997 fix: Don't remove pytest container when running with host network mode
When the container runs with host networking instead of the default bridge, the `$HOSTNAME` / `/etc/hostname` reflects that of the host instead of the container ID , which causes the pytest container to get removed accidentally.

Using a container name instead we can more reliably target the container to avoid removing it, should we need to run with host networking instead.
2021-12-31 22:12:25 +13:00
polarathene e748d53a1f chore: Extract hostname access to a var
DRY and clearer that we're referring to the pytest container.
2021-12-31 21:51:40 +13:00
polarathene 93c04dce8d fix: Properly detect pytest running via container
The original `/.dockerenv` approach is no longer valid, and context wise we're only using this for the test suite, so using an ENV in that container is a better solution.
2021-12-31 21:42:38 +13:00
dependabot[bot] 0493e799f4
chore(deps): bump nginx from 1.21.4 to 1.21.5
Bumps nginx from 1.21.4 to 1.21.5.

---
updated-dependencies:
- dependency-name: nginx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-30 04:08:35 +00:00
polarathene c5166f580e tests: Add utility method to verify TLS chain of trust 2021-12-21 18:44:51 +13:00
polarathene 9dc9d90d34 tests: Verify site-specific DH params feature works correctly
This addition requires usage of `DEFAULT_HOST` on containers tested to ensure they don't accidentally use `web2` as their default fallback (due to no SNI / `-servername` requested in openssl queries), otherwise they would be testing against the incorrect DH params response.

They could alternatively request an FQDN explicitly as well, instead of relying on implicit fallback/default server selection behaviour.

---

`web2.nginx-proxy.tld.dhparam.pem` is a copy of `ffdhe2048.pem`.
2021-12-21 18:41:43 +13:00
polarathene 0f15130476 tests: Verify correct DH group size when negotiating
Additionally allows for adding extra openssl params when needed.
2021-12-21 18:41:43 +13:00
polarathene 75528bdfcb chore: Refactor checksum comparisons
- Use a DRY method instead.
- ENV test changed from 2048-bit to 3072-bit to avoid confusion in a future test that should not be mixed up accidentally with 2048-bit elsewhere.
- Custom DH file test comparison changed to match other comparisons for equality against the expected DH param content.
- Related comments revised, additional comment for context added by the test definition.
- Minor white-space adjustments.
2021-12-21 18:41:43 +13:00
Nicolas Duchon 7c02ff637a
Merge pull request #1843 from nginx-proxy/nginx-1.21.4
Bump nginx to 1.21.4
2021-12-15 14:02:25 +01:00
Nicolas Duchon 496e0f5f27
tests: mark test_deleted_cert as xfail
test_delete_cert_and_restart_reverseproxy still fails intermitently
2021-12-15 13:01:38 +01:00
Nicolas Duchon 8c909e7d11
build: nginx 1.21.3 -> 1.21.4 2021-12-15 11:53:37 +01:00
Nicolas Duchon d29a53dc1f
Merge pull request #1807 from ucyang/pr/remove-tab
Remove unnecessary tabs
2021-12-11 16:08:30 +01:00
Nicolas Duchon a5eaf29c33
Merge pull request #1819 from HPPinata/main
Clarify grammar in DH-GROUP section
2021-11-05 17:39:39 +01:00
HPPinata bbdee361f1
Clarify grammar in DH-GROUP section
Since the second option got removed, the "either" makes no sense any more and may lead to confusion about non existent alternatives
2021-11-04 21:45:10 +01:00
Unchun Yang 0780e636f9
Remove unnecessary tabs 2021-10-23 00:08:32 +09:00
Nicolas Duchon 83e3b25c46
Merge pull request #1797 from polarathene/feat/prefer-rfc-7919-dhparams
feat: Use RFC 7919 DH groups + Remove DH generation
2021-10-21 08:35:39 +02:00
Nicolas Duchon 36c4ed7632
test: replace test dhparam.pem with ffdhe3072.pem 2021-10-20 21:04:29 +02:00
Nicolas Duchon ab7ac0aadb
fix: backward compatibility w/ DHPARAM_GENERATION
Also use true rather than 1 to stay consistent
with other boolean environment variables
2021-10-20 19:15:27 +02:00
Nicolas Duchon 02396e3b58
Merge pull request #1791 from nginx-proxy/dependabot/pip/test/requirements/docker-5.0.3
chore(deps): bump docker from 5.0.2 to 5.0.3 in /test/requirements
2021-10-09 19:36:39 +02:00
dependabot[bot] b1b1b700ea
chore(deps): bump docker from 5.0.2 to 5.0.3 in /test/requirements
Bumps [docker](https://github.com/docker/docker-py) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/docker/docker-py/releases)
- [Commits](https://github.com/docker/docker-py/compare/5.0.2...5.0.3)

---
updated-dependencies:
- dependency-name: docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-08 04:27:38 +00:00
Nicolas Duchon 42cf18734f
Merge pull request #1774 from nginx-proxy/dependabot/docker/nginx-1.21.3
chore(deps): bump nginx from 1.21.1 to 1.21.3
2021-09-30 19:17:25 +02:00
polarathene 41bd4076c0 chore: DRY up `test_dhparam.yml`
Use YAML anchors for repeated values providing a single source of truth.

I would use `x-*` convention to store anchors above service containers, but this seems to require a compose config that defines the services (and version?) keys, which this test setup was failing to be compatible with for some reason..
2021-09-29 15:20:08 +13:00
polarathene 391ca3e3b5 fix(Dockerfile): Remove `VOLUME` in Dockerfile
Anonymous volumes are discouraged for reliable persistence.

Users should use named volumes or bind mounts instead. Potentially breaking change, users can also use explicit anonymous volumes instead of relying on implicit anonymous volumes.

`nginx-proxy` really should not be creating implicit anonymous volumes as in most cases it is undesirable.

`git blame` reveals this was added in 2014  by jwilder, with a message that implies implicit anonymous volumes was never intended..
2021-09-28 21:59:53 +13:00
polarathene 0cd573f043 tests(`pytest.sh`): Update Syntax
- Added clarification comment of the DIR command
- Quoted `ARGS` usage required wrapping `ARGS` assignment in an array to properly expand. This wasn't broken before, but is required change to keep ShellCheck  lint happy.
- Quote wrapped `DIR` usage, the volume target had an extra `/` before the `DIR` which seems unnecessary as `pwd` should return absolute path.
- Expanded `docker run` options to long-form.
2021-09-28 21:59:53 +13:00
polarathene e81001615c tests: Improve error handling output and use regular string comparisons
As this project isn't exactly python focused apart from the test suite, I'll assume other contributors are probably not as experienced with python either. Since this is a rather technical test, the extra comments should help grok the functionality without floundering around with the docs.

When the subprocess raises an exception due to an issue with the command (_eg using `-CAfile` arg to `openssl` with an invalid path_), the tests would output large walls of text that wasn't particularly helpful in troubleshooting the issue. `stderr` was also leaking out inbetween the test case results in the terminal, this has been resolved by ensuring that output is caught and piped, which keeps it available to python when an exception is raised. Identifying the actual error cause and location is now much nicer.

Updated the output to be plain string content instead of byte strings, this works fine :)
2021-09-28 21:59:53 +13:00
polarathene 1d2f308cdf feat: Bring back ability to skip default DH params
Adds back the ability to avoid using DH params, provided no file was explicitly supplied.

This used to be `DHPARAM_GENERATION=false`, the equivalent is now `DHPARAM_SKIP=1` (default 0). Previous name was no longer appropriate.

Ensures that if a user has explicitly provided their own dhparam file to still output a warning instead of the skip message, since `DHPARAM_SKIP=1` doesn't disable the support in nginx.
2021-09-28 21:59:53 +13:00
polarathene fd35a09240 tests: Revise dhparams tests
- `dhparam_generation` tests are no longer necessary, dropped.

Modified the remaining `dhparam` test to use multiple `nginx-proxy` images to verify correct behavior for different configs.

Tests now cover:

- Default (ffdhe4096) is used.
- Alternative via ENV (ffdhe2048) works correctly.
- Invalid group via ENV (1024-bit) fails.
- Custom DH params provided via file mount works with warning emitted.

---

- `assert_log_contains`: added a `container_name` arg with `nginxproxy` as the default value. This allows multiple nginx-proxy containers to utilize this method instead.

- Extracted out the `openssl` test (_to `negotiate_cipher()`_) and modified it to be a bit more flexible. It now takes a container with optional extra args to pass to `openssl` command called, as well as the `grep` string to match. This made the original test redundant, so I've dropped it.

- Added two methods to use `negotiate_cipher()`, one verifies a DHE cipher suite was negotiated and checks that a DH emphermal key was also mentioned in the output. The other method verifies the expectation of failing to negotiate a valid cipher if DH params have not been set, while verifying that non-DHE cipher suites can be successfully negotiated.

- Added a `get_env()` method for extracting attached environments on a container. This is useful for verifying invalid `DHPARAM_BITS` values (eg `1024`-bit).

- The original `Server Temp Key` assertion was incorrect, it was expecting a value that is unrelated to DHE cipher suite support (_`X25519` is related to ECDHE_). This is due to TLS 1.3 being negotiated where you cannot use custom DH params, nor influence the negotiated cipher due to this mechanism changing from TLS 1.3. TLS 1.3 does support DH params, but it internally negotiates RFC 7919 group between server and client instead. Thus to verify expectations, the connection via `openssl` is made explicitly with TLS 1.2 instead.
2021-09-28 21:59:53 +13:00
polarathene 9299a2801e tests: Remove dhparam volume
No longer necessary for the majority of tests.
2021-09-28 21:50:11 +13:00
polarathene 004e4a5cda chore: Refactor `_setup_dh()`
- `DHPARAM_FILE` is a local var not intended for overriding via ENV. Clarified that with `local` declaration.

- `FFDHE_GROUP` var uses default assignment (_`:=4096` instead of only substitute `:-4096`_), so that `DHPARAM_BITS` retains the default 4096 value in subsequent references if no custom size was provided.

- Refactored the conditional statements to only handle early failure conditions. Shifting out the RFC7919 support that can run after all checks have passed.

- Revised comments.
2021-09-28 21:50:11 +13:00
polarathene a7a2d6e44b chore: Use direct URL instead of URL shortener
Implicit URL is unnecessary (_and presently relies on Github redirecting from it's original mapped URL_).

Use an explicit URL instead to reduce the guesswork/trust of where the shortener was going to redirect to.
2021-09-28 21:50:11 +13:00
polarathene 6f7eb8bd97 chore: 6/6 - Update shell syntax
- `==` for string equality since we're using bash `[[ test ]]` already.
- Uppercase `socket_file` variable to be consistent with other internal variables used in the script.
- Convert `[ test ]` to `[[ test ]]` for consistency, improving maintenance. Double-bracket (_not posix compatible_) does not require quoted variables, ShellCheck lint knows this is safe too :)
- `-z` test for `$RESOLVERS` is native syntax to check for empty string value.
- Referenced variables should generally be wrapped like so `"${VAR}"`.
- Variable assignments with string values should be double quotes for content with variables, otherwise use single quotes (_no interpolation_).
- Converted my if statements to use the same style used in the rest of the file.
2021-09-28 21:50:11 +13:00
polarathene 0f330b85b1 chore: 5/6 - Shift dhparam method to the bottom
Minor change on error message.
2021-09-28 21:50:11 +13:00
polarathene ed009c0ec8 chore: 4/6 - Extract grouped logic to their own methods 2021-09-28 21:50:11 +13:00
polarathene 091dd855af chore: 3/6 - Indent function content
This is a white-space only change to ease review diff noise.
2021-09-28 21:50:11 +13:00
polarathene 2e6d7561a3 chore: 2/6 - Handle CMD check early, wrap init logic into a function 2021-09-28 21:50:11 +13:00
polarathene 8aacd13241 chore: 1/6 - Inline failure at it's cause
This change has been split into 6 iterative parts/commits to ease the review process.
2021-09-28 21:50:11 +13:00
polarathene ac066a73e4 feat: Replace generated DH params with RFC 7919 standardized DHE groups
- While the anonymous VOLUME can be dropped from Dockerfile, the path needs to be valid at run-time, might as well ensure it's available by creating the dhparam folder at build.

- Generation logic no longer necessary, dropped. 

- Standardized RFC 7919 groups added (2048, 3072, 4096), with 4096-bit remaining the default size. The DH logic can live in the entrypoint script as well. 

- Third-party supplied pre-generated DH params removed as they're not considered trustworthy compared to RFC 7919 groups.
2021-09-28 21:30:02 +13:00
Nicolas Duchon b133403331
Merge pull request #1775 from kevinnls/patch-1
fix link
2021-09-10 16:19:02 +02:00
kevinnls dc9876b6c2
fix anchor 2021-09-10 19:27:33 +05:30