From ba86bc04f6f05811a3dd24deab144de5bb505f05 Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Wed, 4 Aug 2021 22:25:55 +0200 Subject: [PATCH 1/2] tests: check for raw IPv4/6 used as VIRTUAL_HOST --- test/test_raw-ip-vhost.py | 15 ++++++++++++ test/test_raw-ip-vhost.yml | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 test/test_raw-ip-vhost.py create mode 100644 test/test_raw-ip-vhost.yml diff --git a/test/test_raw-ip-vhost.py b/test/test_raw-ip-vhost.py new file mode 100644 index 0000000..aaff852 --- /dev/null +++ b/test/test_raw-ip-vhost.py @@ -0,0 +1,15 @@ +import pytest + + +def test_raw_ipv4_vhost_forwards_to_web1(docker_compose, nginxproxy): + r = nginxproxy.get("http://172.20.0.4") + assert r.status_code == 200 + web1_container = docker_compose.containers.get("web1") + assert r.text == f"I'm {web1_container.id[:12]}\n" + + +def test_raw_ipv6_vhost_forwards_to_web2(docker_compose, nginxproxy): + r = nginxproxy.get("http://[fd00::4]", ipv6=True) + assert r.status_code == 200 + web2_container = docker_compose.containers.get("web2") + assert r.text == f"I'm {web2_container.id[:12]}\n" diff --git a/test/test_raw-ip-vhost.yml b/test/test_raw-ip-vhost.yml new file mode 100644 index 0000000..e265d74 --- /dev/null +++ b/test/test_raw-ip-vhost.yml @@ -0,0 +1,48 @@ +version: '2' + +networks: + net1: + enable_ipv6: true + ipam: + config: + - subnet: 172.20.0.0/16 + - subnet: fd00::/80 + +services: + web1: + container_name: web1 + image: web + expose: + - "81" + environment: + WEB_PORTS: 81 + VIRTUAL_HOST: "172.20.0.4" + networks: + net1: + ipv4_address: 172.20.0.2 + ipv6_address: fd00::2 + + web2: + container_name: web2 + image: web + expose: + - "82" + environment: + WEB_PORTS: 82 + VIRTUAL_HOST: "[fd00::4]" + networks: + net1: + ipv4_address: 172.20.0.3 + ipv6_address: fd00::3 + + sut: + image: nginxproxy/nginx-proxy:test + environment: + ENABLE_IPV6: "true" + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + - ./lib/ssl/dhparam.pem:/etc/nginx/dhparam/dhparam.pem:ro + networks: + net1: + ipv4_address: 172.20.0.4 + ipv6_address: fd00::4 From 89d37882b63ac68fe2b0a39d1e59020800d501c4 Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Wed, 4 Aug 2021 22:28:00 +0200 Subject: [PATCH 2/2] fix: always use sha1 of hostname as upstream name --- nginx.tmpl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nginx.tmpl b/nginx.tmpl index 7c36e70..6df80f6 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -153,8 +153,7 @@ server { {{ range $host, $containers := groupByMulti $ "Env.VIRTUAL_HOST" "," }} {{ $host := trim $host }} -{{ $is_regexp := hasPrefix "~" $host }} -{{ $upstream_name := (print (when $is_regexp (sha1 $host) $host) "-upstream") }} +{{ $upstream_name := sha1 $host }} # {{ $host }} upstream {{ $upstream_name }} {