nixpkgs/pkgs/servers/http
Raito Bezarius 69bb0f94de nixos/nginx: first-class PROXY protocol support
PROXY protocol is a convenient way to carry information about the
originating address/port of a TCP connection across multiple layers of
proxies/NAT, etc.

Currently, it is possible to make use of it in NGINX's NixOS module, but
is painful when we want to enable it "globally".
Technically, this is achieved by reworking the defaultListen options and
the objective is to have a coherent way to specify default listeners in
the current API design.
See `mkDefaultListenVhost` and `defaultListen` for the details.

It adds a safeguard against running a NGINX with no HTTP listeners (e.g.
only PROXY listeners) while asking for ACME certificates over HTTP-01.

An interesting usecase of PROXY protocol is to enable seamless IPv4 to
IPv6 proxy with origin IPv4 address for IPv6-only NGINX servers, it is
demonstrated how to achieve this in the tests, using sniproxy.

Finally, the tests covers:

- NGINX `defaultListen` mechanisms are not broken by these changes;
- NGINX PROXY protocol listeners are working in a final usecase
  (sniproxy);
- uses snakeoil TLS certs from ACME setup with wildcard certificates;

In the future, it is desirable to spoof-attack NGINX in this scenario to
ascertain that `set_real_ip_from` and all the layers are working as
intended and preventing any user from setting their origin IP address to
any arbitrary, opening up the NixOS module to bad™ vulnerabilities.

For now, it is quite hard to achieve while being minimalistic about the
tests dependencies.
2023-05-26 19:48:26 +02:00
..
apache-httpd apacheHttpd: 2.4.56 -> 2.4.57 2023-04-29 07:43:39 +00:00
apache-modules apacheHttpdPackages.mod_auth_mellon: 0.18.0 -> 0.18.1 2023-04-20 18:47:44 +00:00
apt-cacher-ng
bozohttpd bozohttpd: 20210227 -> 20220517 2023-05-03 09:38:12 +00:00
cgiserver
couchdb couchdb3: 3.3.1 -> 3.3.2 2023-05-11 02:41:41 +02:00
darkhttpd
dave dave: use buildGoModule 2023-01-27 01:45:35 +00:00
dufs dufs: 0.32.0 -> 0.33.0 2023-03-22 16:35:10 +00:00
envoy Update pkgs/servers/http/envoy/default.nix 2023-05-12 22:04:55 +02:00
gatling gatling: fix undefined reference to 'crypt' 2022-11-30 01:03:34 +01:00
go-camo go-camo: 2.4.2 -> 2.4.3 2023-02-21 03:48:05 +00:00
h2o
hiawatha treewide: use mbedtls 3 where possible 2022-12-07 19:58:55 +00:00
hyp treewide/servers: use top-level fetchPypi 2023-05-25 12:06:38 -04:00
jboss
jetty jetty: 11.0.13 -> 11.0.14 2023-04-27 07:14:15 +00:00
lighttpd lighttpd: Disable tests for DES and MD5 2023-03-26 15:58:08 +02:00
lwan
merecat nixos/merecat: init 2022-10-31 09:24:28 +01:00
micro-httpd
mini-httpd treewide: move NIX_CFLAGS_COMPILE to the env attrset 2023-02-22 21:23:04 +02:00
nginx nixos/nginx: first-class PROXY protocol support 2023-05-26 19:48:26 +02:00
nix-binary-cache
openresty openresty: 1.19.9 -> 1.21.4 2022-12-19 08:38:48 +01:00
pomerium pomerium: Spell "postBuild" correctly 2023-05-24 09:21:51 -07:00
pshs
quark
ran
redstore
router router: 1.18.0 -> 1.18.1 2023-05-17 00:05:19 +00:00
showoff
spawn-fcgi
tengine treewide: move NIX_CFLAGS_COMPILE to the env attrset 2023-02-22 21:23:04 +02:00
thttpd
tomcat Merge pull request #233002 from LeSuisse/tomcat9-9.0.75 2023-05-20 19:07:43 +01:00
trafficserver trafficserver: 9.1.3 -> 9.1.4 2022-12-27 21:15:43 +01:00
unit unit: add ruby 3.2 2023-05-13 16:55:50 +03:00
webfs
webhook nixos/webhook: init 2022-12-29 01:24:46 +01:00
yaws