1
0
mirror of https://github.com/thib8956/nginx-proxy synced 2025-07-01 14:25:46 +00:00

test: ipv6 docker networks

This commit is contained in:
Nicolas Duchon
2024-05-15 20:28:08 +02:00
parent 5aea820aaa
commit dcc97b9cff
7 changed files with 133 additions and 0 deletions

View File

@ -0,0 +1,35 @@
import pytest
def test_unknown_virtual_host_ipv4(docker_compose, nginxproxy):
r = nginxproxy.get("http://nginx-proxy/port")
assert r.status_code == 503
def test_forwards_to_web1_ipv4(docker_compose, nginxproxy):
r = nginxproxy.get("http://web1.nginx-proxy.tld/port")
assert r.status_code == 200
assert r.text == "answer from port 81\n"
def test_forwards_to_web2_ipv4(docker_compose, nginxproxy):
r = nginxproxy.get("http://web2.nginx-proxy.tld/port")
assert r.status_code == 200
assert r.text == "answer from port 82\n"
def test_unknown_virtual_host_ipv6(docker_compose, nginxproxy):
r = nginxproxy.get("http://nginx-proxy/port", ipv6=True)
assert r.status_code == 503
def test_forwards_to_web1_ipv6(docker_compose, nginxproxy):
r = nginxproxy.get("http://web1.nginx-proxy.tld/port", ipv6=True)
assert r.status_code == 200
assert r.text == "answer from port 81\n"
def test_forwards_to_web2_ipv6(docker_compose, nginxproxy):
r = nginxproxy.get("http://web2.nginx-proxy.tld/port", ipv6=True)
assert r.status_code == 200
assert r.text == "answer from port 82\n"

View File

@ -0,0 +1,38 @@
version: "2"
networks:
net1:
enable_ipv6: true
ipam:
config:
- subnet: fd00:1::/80
services:
web1:
image: web
expose:
- "81"
environment:
WEB_PORTS: 81
VIRTUAL_HOST: web1.nginx-proxy.tld
networks:
- net1
web2:
image: web
expose:
- "82"
environment:
WEB_PORTS: 82
VIRTUAL_HOST: web2.nginx-proxy.tld
networks:
- net1
sut:
image: nginxproxy/nginx-proxy:test
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
ENABLE_IPV6: "true"
networks:
- net1

View File

@ -0,0 +1,19 @@
import pytest
def test_forwards_to_ipv4_only_network(docker_compose, nginxproxy):
r = nginxproxy.get("http://ipv4only.nginx-proxy.tld/port")
assert r.status_code == 200
assert r.text == "answer from port 80\n"
def test_forwards_to_dualstack_network(docker_compose, nginxproxy):
r = nginxproxy.get("http://dualstack.nginx-proxy.tld")
assert r.status_code == 200
assert "Welcome to nginx!" in r.text
def test_dualstack_network_prefer_ipv4_config(docker_compose, nginxproxy):
conf = nginxproxy.get_conf().decode('ASCII')
assert "IPv6 address: fd00:cafe:face:feed::2 (ignored; reachable but IPv4 prefered)" in conf
assert "server 172.16.20.2:80;" in conf

View File

@ -0,0 +1,45 @@
version: "2"
networks:
ipv4net:
ipam:
config:
- subnet: 172.16.10.0/24
dualstacknet:
enable_ipv6: true
ipam:
config:
- subnet: 172.16.20.0/24
- subnet: fd00:cafe:face:feed::/64
services:
ipv4only:
image: web
expose:
- "80"
environment:
WEB_PORTS: 80
VIRTUAL_HOST: ipv4only.nginx-proxy.tld
networks:
ipv4net:
ipv4_address: 172.16.10.2
dualstack:
image: nginx:alpine
environment:
VIRTUAL_HOST: dualstack.nginx-proxy.tld
networks:
dualstacknet:
ipv4_address: 172.16.20.2
ipv6_address: fd00:cafe:face:feed::2
sut:
image: nginxproxy/nginx-proxy:test
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
ipv4net:
ipv4_address: 172.16.10.3
dualstacknet:
ipv4_address: 172.16.20.3
ipv6_address: fd00:cafe:face:feed::3

View File

@ -0,0 +1,19 @@
import pytest
def test_forwards_to_ipv4_only_network(docker_compose, nginxproxy):
r = nginxproxy.get("http://ipv4only.nginx-proxy.tld/port")
assert r.status_code == 200
assert r.text == "answer from port 80\n"
def test_forwards_to_dualstack_network(docker_compose, nginxproxy):
r = nginxproxy.get("http://dualstack.nginx-proxy.tld")
assert r.status_code == 200
assert "Welcome to nginx!" in r.text
def test_dualstack_network_prefer_ipv6_config(docker_compose, nginxproxy):
conf = nginxproxy.get_conf().decode('ASCII')
assert "IPv4 address: 172.16.20.2 (ignored; reachable but IPv6 prefered)" in conf
assert "server [fd00:cafe:face:feed::2]:80;" in conf

View File

@ -0,0 +1,47 @@
version: "2"
networks:
ipv4net:
ipam:
config:
- subnet: 172.16.10.0/24
dualstacknet:
enable_ipv6: true
ipam:
config:
- subnet: 172.16.20.0/24
- subnet: fd00:cafe:face:feed::/64
services:
ipv4only:
image: web
expose:
- "80"
environment:
WEB_PORTS: 80
VIRTUAL_HOST: ipv4only.nginx-proxy.tld
networks:
ipv4net:
ipv4_address: 172.16.10.2
dualstack:
image: nginx:alpine
environment:
VIRTUAL_HOST: dualstack.nginx-proxy.tld
networks:
dualstacknet:
ipv4_address: 172.16.20.2
ipv6_address: fd00:cafe:face:feed::2
sut:
image: nginxproxy/nginx-proxy:test
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
PREFER_IPV6_NETWORK: "true"
networks:
ipv4net:
ipv4_address: 172.16.10.3
dualstacknet:
ipv4_address: 172.16.20.3
ipv6_address: fd00:cafe:face:feed::3