mirror of
				https://github.com/thib8956/nginx-proxy
				synced 2025-11-03 18:49:20 +00:00 
			
		
		
		
	tests: factor out base nginx-proxy config
This commit is contained in:
		@@ -1,9 +1,6 @@
 | 
			
		||||
networks:
 | 
			
		||||
  default:
 | 
			
		||||
    name: test_events-net
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginxproxy:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    container_name: nginx-proxy
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
							
								
								
									
										151
									
								
								test/conftest.py
									
									
									
									
									
								
							
							
						
						
									
										151
									
								
								test/conftest.py
									
									
									
									
									
								
							@@ -1,11 +1,13 @@
 | 
			
		||||
import contextlib
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
import pathlib
 | 
			
		||||
import re
 | 
			
		||||
import shlex
 | 
			
		||||
import socket
 | 
			
		||||
import subprocess
 | 
			
		||||
import time
 | 
			
		||||
from io import StringIO
 | 
			
		||||
from typing import Iterator, List, Optional
 | 
			
		||||
 | 
			
		||||
import backoff
 | 
			
		||||
@@ -25,7 +27,7 @@ logging.getLogger('backoff').setLevel(logging.INFO)
 | 
			
		||||
logging.getLogger('DNS').setLevel(logging.DEBUG)
 | 
			
		||||
logging.getLogger('requests.packages.urllib3.connectionpool').setLevel(logging.WARN)
 | 
			
		||||
 | 
			
		||||
CA_ROOT_CERTIFICATE = os.path.join(os.path.dirname(__file__), 'certs/ca-root.crt')
 | 
			
		||||
CA_ROOT_CERTIFICATE = pathlib.Path(__file__).parent.joinpath("certs/ca-root.crt")
 | 
			
		||||
PYTEST_RUNNING_IN_CONTAINER = os.environ.get('PYTEST_RUNNING_IN_CONTAINER') == "1"
 | 
			
		||||
FORCE_CONTAINER_IPV6 = False  # ugly global state to consider containers' IPv6 address instead of IPv4
 | 
			
		||||
 | 
			
		||||
@@ -71,8 +73,8 @@ class RequestsForDocker:
 | 
			
		||||
    """
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.session = requests.Session()
 | 
			
		||||
        if os.path.isfile(CA_ROOT_CERTIFICATE):
 | 
			
		||||
            self.session.verify = CA_ROOT_CERTIFICATE
 | 
			
		||||
        if CA_ROOT_CERTIFICATE.is_file():
 | 
			
		||||
            self.session.verify = CA_ROOT_CERTIFICATE.as_posix()
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_nginx_proxy_container() -> Container:
 | 
			
		||||
@@ -298,20 +300,40 @@ def get_nginx_conf_from_container(container: Container) -> bytes:
 | 
			
		||||
        return conffile.read()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def docker_compose_up(compose_file: str):
 | 
			
		||||
    logging.info(f'{DOCKER_COMPOSE} -f {compose_file} up -d')
 | 
			
		||||
def __prepare_and_execute_compose_cmd(compose_files: List[str], project_name: str, cmd: str):
 | 
			
		||||
    """
 | 
			
		||||
    Prepare and execute the Docker Compose command with the provided compose files and project name.
 | 
			
		||||
    """
 | 
			
		||||
    compose_cmd = StringIO()
 | 
			
		||||
    compose_cmd.write(DOCKER_COMPOSE)
 | 
			
		||||
    compose_cmd.write(f" --project-name {project_name}")
 | 
			
		||||
    for compose_file in compose_files:
 | 
			
		||||
        compose_cmd.write(f" --file {compose_file}")
 | 
			
		||||
    compose_cmd.write(f" {cmd}")
 | 
			
		||||
 | 
			
		||||
    logging.info(compose_cmd.getvalue())
 | 
			
		||||
    try:
 | 
			
		||||
        subprocess.check_output(shlex.split(f'{DOCKER_COMPOSE} -f {compose_file} up -d'), stderr=subprocess.STDOUT)
 | 
			
		||||
        subprocess.check_output(shlex.split(compose_cmd.getvalue()), stderr=subprocess.STDOUT)
 | 
			
		||||
    except subprocess.CalledProcessError as e:
 | 
			
		||||
        pytest.fail(f"Error while running '{DOCKER_COMPOSE} -f {compose_file} up -d':\n{e.output}", pytrace=False)
 | 
			
		||||
        pytest.fail(f"Error while running '{compose_cmd.getvalue()}':\n{e.output}", pytrace=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def docker_compose_down(compose_file: str):
 | 
			
		||||
    logging.info(f'{DOCKER_COMPOSE} -f {compose_file} down -v')
 | 
			
		||||
    try:
 | 
			
		||||
        subprocess.check_output(shlex.split(f'{DOCKER_COMPOSE} -f {compose_file} down -v'), stderr=subprocess.STDOUT)
 | 
			
		||||
    except subprocess.CalledProcessError as e:
 | 
			
		||||
        pytest.fail(f"Error while running '{DOCKER_COMPOSE} -f {compose_file} down -v':\n{e.output}", pytrace=False)
 | 
			
		||||
def docker_compose_up(compose_files: List[str], project_name: str):
 | 
			
		||||
    """
 | 
			
		||||
    Execute compose up --detach with the provided compose files and project name.
 | 
			
		||||
    """
 | 
			
		||||
    if compose_files is None or len(compose_files) == 0:
 | 
			
		||||
        pytest.fail(f"No compose file passed to docker_compose_up", pytrace=False)
 | 
			
		||||
    __prepare_and_execute_compose_cmd(compose_files, project_name, cmd="up --detach")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def docker_compose_down(compose_files: List[str], project_name: str):
 | 
			
		||||
    """
 | 
			
		||||
    Execute compose down --volumes with the provided compose files and project name.
 | 
			
		||||
    """
 | 
			
		||||
    if compose_files is None or len(compose_files) == 0:
 | 
			
		||||
        pytest.fail(f"No compose file passed to docker_compose_up", pytrace=False)
 | 
			
		||||
    __prepare_and_execute_compose_cmd(compose_files, project_name, cmd="down --volumes")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def wait_for_nginxproxy_to_be_ready():
 | 
			
		||||
@@ -330,36 +352,47 @@ def wait_for_nginxproxy_to_be_ready():
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def docker_compose_file(request: FixtureRequest) -> Iterator[Optional[str]]:
 | 
			
		||||
    """Fixture naming the docker compose file to consider.
 | 
			
		||||
def docker_compose_files(request: FixtureRequest) -> List[str]:
 | 
			
		||||
    """Fixture returning the docker compose files to consider:
 | 
			
		||||
 | 
			
		||||
    If a YAML file exists with the same name as the test module (with the `.py` extension replaced
 | 
			
		||||
    with `.yml` or `.yaml`), use that.  Otherwise, use `docker-compose.yml` in the same directory
 | 
			
		||||
    as the test module.
 | 
			
		||||
    If a YAML file exists with the same name as the test module (with the `.py` extension
 | 
			
		||||
    replaced with `.base.yml`, ie `test_foo.py`-> `test_foo.base.yml`) and in the same
 | 
			
		||||
    directory as the test module, use only that file.
 | 
			
		||||
 | 
			
		||||
    Otherwise, merge the following files in this order:
 | 
			
		||||
 | 
			
		||||
    - the `compose.base.yml` file in the parent `test` directory.
 | 
			
		||||
    - if present in the same directory as the test module, the `compose.base.override.yml` file.
 | 
			
		||||
    - the YAML file named after the current test module (ie `test_foo.py`-> `test_foo.yml`)
 | 
			
		||||
 | 
			
		||||
    Tests can override this fixture to specify a custom location.
 | 
			
		||||
    """
 | 
			
		||||
    test_module_dir = os.path.dirname(request.module.__file__)
 | 
			
		||||
    yml_file = os.path.join(test_module_dir, f"{request.module.__name__}.yml")
 | 
			
		||||
    yaml_file = os.path.join(test_module_dir, f"{request.module.__name__}.yaml")
 | 
			
		||||
    default_file = os.path.join(test_module_dir, 'docker-compose.yml')
 | 
			
		||||
    compose_files: List[str] = []
 | 
			
		||||
    test_module_path = pathlib.Path(request.module.__file__).parent
 | 
			
		||||
 | 
			
		||||
    docker_compose_file = None
 | 
			
		||||
    module_base_file = test_module_path.joinpath(f"{request.module.__name__}.base.yml")
 | 
			
		||||
    if module_base_file.is_file():
 | 
			
		||||
        return [module_base_file.as_posix()]
 | 
			
		||||
 | 
			
		||||
    if os.path.isfile(yml_file):
 | 
			
		||||
        docker_compose_file = yml_file
 | 
			
		||||
    elif os.path.isfile(yaml_file):
 | 
			
		||||
        docker_compose_file = yaml_file
 | 
			
		||||
    elif os.path.isfile(default_file):
 | 
			
		||||
        docker_compose_file = default_file
 | 
			
		||||
    global_base_file = test_module_path.parent.joinpath("compose.base.yml")
 | 
			
		||||
    if global_base_file.is_file():
 | 
			
		||||
        compose_files.append(global_base_file.as_posix())
 | 
			
		||||
 | 
			
		||||
    if docker_compose_file is None:
 | 
			
		||||
        logging.error("Could not find any docker compose file named either '{0}.yml', '{0}.yaml' or 'docker-compose.yml'".format(request.module.__name__))
 | 
			
		||||
    else:
 | 
			
		||||
        logging.debug(f"using docker compose file {docker_compose_file}")
 | 
			
		||||
    module_base_override_file = test_module_path.joinpath("compose.base.override.yml")
 | 
			
		||||
    if module_base_override_file.is_file():
 | 
			
		||||
        compose_files.append(module_base_override_file.as_posix())
 | 
			
		||||
 | 
			
		||||
    yield docker_compose_file
 | 
			
		||||
    module_compose_file = test_module_path.joinpath(f"{request.module.__name__}.yml")
 | 
			
		||||
    if module_compose_file.is_file():
 | 
			
		||||
        compose_files.append(module_compose_file.as_posix())
 | 
			
		||||
 | 
			
		||||
    if not module_base_file.is_file() and not module_compose_file.is_file():
 | 
			
		||||
        logging.error(
 | 
			
		||||
            f"Could not find any docker compose file named '{module_base_file.name}' or '{module_compose_file.name}'"
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    logging.debug(f"using docker compose files {compose_files}")
 | 
			
		||||
    return compose_files
 | 
			
		||||
 | 
			
		||||
def connect_to_network(network: Network) -> Optional[Network]:
 | 
			
		||||
    """
 | 
			
		||||
@@ -428,30 +461,33 @@ def connect_to_all_networks() -> List[Network]:
 | 
			
		||||
class DockerComposer(contextlib.AbstractContextManager):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self._networks = None
 | 
			
		||||
        self._docker_compose_file = None
 | 
			
		||||
        self._docker_compose_files = None
 | 
			
		||||
        self._project_name = None
 | 
			
		||||
 | 
			
		||||
    def __exit__(self, *exc_info):
 | 
			
		||||
        self._down()
 | 
			
		||||
 | 
			
		||||
    def _down(self):
 | 
			
		||||
        if self._docker_compose_file is None:
 | 
			
		||||
        if self._docker_compose_files is None:
 | 
			
		||||
            return
 | 
			
		||||
        for network in self._networks:
 | 
			
		||||
            disconnect_from_network(network)
 | 
			
		||||
        docker_compose_down(self._docker_compose_file)
 | 
			
		||||
        docker_compose_down(self._docker_compose_files, self._project_name)
 | 
			
		||||
        self._docker_compose_file = None
 | 
			
		||||
        self._project_name = None
 | 
			
		||||
 | 
			
		||||
    def compose(self, docker_compose_file: Optional[str]):
 | 
			
		||||
        if docker_compose_file == self._docker_compose_file:
 | 
			
		||||
    def compose(self, docker_compose_files: List[str], project_name: str):
 | 
			
		||||
        if docker_compose_files == self._docker_compose_files and project_name == self._project_name:
 | 
			
		||||
            return
 | 
			
		||||
        self._down()
 | 
			
		||||
        if docker_compose_file is None:
 | 
			
		||||
        if docker_compose_files is None or project_name is None:
 | 
			
		||||
            return
 | 
			
		||||
        docker_compose_up(docker_compose_file)
 | 
			
		||||
        docker_compose_up(docker_compose_files, project_name)
 | 
			
		||||
        self._networks = connect_to_all_networks()
 | 
			
		||||
        wait_for_nginxproxy_to_be_ready()
 | 
			
		||||
        time.sleep(3)  # give time to containers to be ready
 | 
			
		||||
        self._docker_compose_file = docker_compose_file
 | 
			
		||||
        self._docker_compose_files = docker_compose_files
 | 
			
		||||
        self._project_name = project_name
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
@@ -480,16 +516,29 @@ def monkey_patched_dns():
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def docker_compose(monkey_patched_dns, docker_composer, docker_compose_file) -> Iterator[DockerClient]:
 | 
			
		||||
    """Ensures containers described in a docker compose file are started.
 | 
			
		||||
 | 
			
		||||
    A custom docker compose file name can be specified by overriding the `docker_compose_file`
 | 
			
		||||
    fixture.
 | 
			
		||||
 | 
			
		||||
    Also, in the case where pytest is running from a docker container, this fixture makes sure
 | 
			
		||||
    our container will be attached to all the docker networks.
 | 
			
		||||
def docker_compose(
 | 
			
		||||
        request: FixtureRequest,
 | 
			
		||||
        monkeypatch,
 | 
			
		||||
        monkey_patched_dns,
 | 
			
		||||
        docker_composer,
 | 
			
		||||
        docker_compose_files
 | 
			
		||||
) -> Iterator[DockerClient]:
 | 
			
		||||
    """
 | 
			
		||||
    docker_composer.compose(docker_compose_file)
 | 
			
		||||
    Ensures containers necessary for the test module are started in a compose project,
 | 
			
		||||
    and set the environment variable `PYTEST_MODULE_PATH` to the test module's parent folder.
 | 
			
		||||
 | 
			
		||||
    A list of custom docker compose files path can be specified by overriding
 | 
			
		||||
    the `docker_compose_file` fixture.
 | 
			
		||||
 | 
			
		||||
    Also, in the case where pytest is running from a docker container, this fixture
 | 
			
		||||
    makes sure our container will be attached to all the docker networks.
 | 
			
		||||
    """
 | 
			
		||||
    pytest_module_path = pathlib.Path(request.module.__file__).parent
 | 
			
		||||
    monkeypatch.setenv("PYTEST_MODULE_PATH", pytest_module_path.as_posix())
 | 
			
		||||
 | 
			
		||||
    project_name = request.module.__name__
 | 
			
		||||
    docker_composer.compose(docker_compose_files, project_name)
 | 
			
		||||
 | 
			
		||||
    yield docker_client
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,6 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ACME_HTTP_CHALLENGE_LOCATION: "false"
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -34,12 +38,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: "web4.nginx-proxy.tld"
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
      ACME_HTTP_CHALLENGE_LOCATION: "true"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    environment:
 | 
			
		||||
      ACME_HTTP_CHALLENGE_LOCATION: "false"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -34,10 +34,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: "web4.nginx-proxy.tld"
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
      ACME_HTTP_CHALLENGE_LOCATION: "false"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ACME_HTTP_CHALLENGE_LOCATION: "legacy"
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -15,12 +19,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "82"
 | 
			
		||||
      VIRTUAL_HOST: "web2.nginx-proxy.tld"
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    environment:
 | 
			
		||||
      ACME_HTTP_CHALLENGE_LOCATION: "legacy"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./50x.html:/usr/share/nginx/html/errors/50x.html:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/50x.html:/usr/share/nginx/html/errors/50x.html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_f00.conf:/etc/nginx/vhost.d/default_location:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/web3.nginx-proxy.example_location:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_f00.conf:/etc/nginx/vhost.d/default_location:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/web3.nginx-proxy.example_location:ro
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_f00.conf:/etc/nginx/proxy.conf:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_f00.conf:/etc/nginx/proxy.conf:ro
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_f00.conf:/etc/nginx/vhost.d/web1.nginx-proxy.example_location:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/561032515ede3ab3a015edfb244608b72409c430_location:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_f00.conf:/etc/nginx/vhost.d/web1.nginx-proxy.example_location:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/561032515ede3ab3a015edfb244608b72409c430_location:ro
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_f00.conf:/etc/nginx/vhost.d/web1.nginx-proxy.example:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/561032515ede3ab3a015edfb244608b72409c430:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_f00.conf:/etc/nginx/vhost.d/web1.nginx-proxy.example:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/561032515ede3ab3a015edfb244608b72409c430:ro
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./my_custom_proxy_settings_f00.conf:/etc/nginx/conf.d/my_custom_proxy_settings_f00.conf:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/my_custom_proxy_settings_f00.conf:/etc/nginx/conf.d/my_custom_proxy_settings_f00.conf:ro
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DEBUG_ENDPOINT: "true"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,4 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 | 
			
		||||
  debug_disabled1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  # GIVEN a webserver with VIRTUAL_HOST set to web1.tld
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      DEFAULT_HOST: web1.tld
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -7,11 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: web1.tld
 | 
			
		||||
 | 
			
		||||
  # WHEN nginx-proxy runs with DEFAULT_HOST set to web1.tld
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DEFAULT_HOST: web1.tld
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,10 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/f00.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DOCKER_HOST: unix:///f00.sock
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -14,10 +20,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "82"
 | 
			
		||||
      VIRTUAL_HOST: web2.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/f00.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DOCKER_HOST: unix:///f00.sock
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,15 @@
 | 
			
		||||
volumes:
 | 
			
		||||
  nginx_conf:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx:
 | 
			
		||||
  nginx-proxy-nginx:
 | 
			
		||||
    image: nginx
 | 
			
		||||
    container_name: nginx
 | 
			
		||||
    volumes:
 | 
			
		||||
      - nginx_conf:/etc/nginx/conf.d:ro
 | 
			
		||||
 | 
			
		||||
  dockergen:
 | 
			
		||||
  nginx-proxy-dockergen:
 | 
			
		||||
    image: nginxproxy/docker-gen
 | 
			
		||||
    command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
 | 
			
		||||
    volumes:
 | 
			
		||||
@@ -21,6 +25,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: whoami.nginx.container.docker
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  nginx_conf:
 | 
			
		||||
@@ -1,9 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./withdefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_HTTP_ON_MISSING_CERT: "false"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								test/test_events/test_events.base.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/test_events/test_events.base.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
include:
 | 
			
		||||
  - ../compose.base.yml
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  default:
 | 
			
		||||
    name: test_events-net
 | 
			
		||||
							
								
								
									
										6
									
								
								test/test_fallback/test_fallback.data/compose.base.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/test_fallback/test_fallback.data/compose.base.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    container_name: nginx-proxy
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./custom-fallback.conf:/etc/nginx/conf.d/zzz-custom-fallback.conf:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./nodefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./withdefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./withdefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./withdefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTPS_METHOD: redirect
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTPS_METHOD: nohttps
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./withdefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./withdefault.certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
import os.path
 | 
			
		||||
import pathlib
 | 
			
		||||
import re
 | 
			
		||||
from typing import List
 | 
			
		||||
 | 
			
		||||
import backoff
 | 
			
		||||
import pytest
 | 
			
		||||
@@ -7,8 +8,12 @@ import requests
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def data_dir():
 | 
			
		||||
    return f"{os.path.splitext(__file__)[0]}.data"
 | 
			
		||||
def docker_compose_files(compose_file) -> List[str]:
 | 
			
		||||
    data_dir = pathlib.Path(__file__).parent.joinpath("test_fallback.data")
 | 
			
		||||
    return [
 | 
			
		||||
        data_dir.joinpath("compose.base.yml"),
 | 
			
		||||
        data_dir.joinpath(compose_file).as_posix()
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
@@ -108,7 +113,7 @@ INTERNAL_ERR_RE = re.compile("TLSV1_UNRECOGNIZED_NAME")
 | 
			
		||||
    # should prefer that server for handling requests for unknown vhosts.
 | 
			
		||||
    ("custom-fallback.yml", "http://unknown.nginx-proxy.test/", 418, None),
 | 
			
		||||
])
 | 
			
		||||
def test_fallback(get, url, want_code, want_err_re):
 | 
			
		||||
def test_fallback(get, compose_file, url, want_code, want_err_re):
 | 
			
		||||
    if want_err_re is None:
 | 
			
		||||
        r = get(url)
 | 
			
		||||
        assert r.status_code == want_code
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								test/test_headers/certs/default.crt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								test/test_headers/certs/default.crt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
Certificate:
 | 
			
		||||
    Data:
 | 
			
		||||
        Version: 3 (0x2)
 | 
			
		||||
        Serial Number: 4096 (0x1000)
 | 
			
		||||
    Signature Algorithm: sha256WithRSAEncryption
 | 
			
		||||
        Issuer: O=nginx-proxy test suite, CN=www.nginx-proxy.tld
 | 
			
		||||
        Validity
 | 
			
		||||
            Not Before: Jan 13 03:06:39 2017 GMT
 | 
			
		||||
            Not After : May 31 03:06:39 2044 GMT
 | 
			
		||||
        Subject: CN=web.nginx-proxy.tld
 | 
			
		||||
        Subject Public Key Info:
 | 
			
		||||
            Public Key Algorithm: rsaEncryption
 | 
			
		||||
                Public-Key: (2048 bit)
 | 
			
		||||
                Modulus:
 | 
			
		||||
                    00:95:56:c7:0d:48:a5:2b:3c:65:49:3f:26:e1:38:
 | 
			
		||||
                    2b:61:30:56:e4:92:d7:63:e0:eb:ad:ac:f9:33:9b:
 | 
			
		||||
                    b2:31:f1:39:13:0b:e5:43:7b:c5:bd:8a:85:c8:d9:
 | 
			
		||||
                    3d:d8:ac:71:ba:16:e7:81:96:b2:ab:ae:c6:c0:bd:
 | 
			
		||||
                    be:a7:d1:96:8f:b2:9b:df:ba:f9:4d:a1:3b:7e:21:
 | 
			
		||||
                    4a:cd:b6:45:f9:6d:79:50:bf:24:8f:c1:6b:c1:09:
 | 
			
		||||
                    19:5b:62:cb:96:e8:04:14:20:e8:d4:16:62:6a:f2:
 | 
			
		||||
                    37:c1:96:e2:9d:53:05:0b:52:1d:e7:68:92:db:8b:
 | 
			
		||||
                    36:68:cd:8d:5b:02:ff:12:f0:ac:5d:0c:c4:e0:7a:
 | 
			
		||||
                    55:a2:49:60:9f:ff:47:1f:52:73:55:4d:d4:f2:d1:
 | 
			
		||||
                    62:a2:f4:50:9d:c9:f6:f1:43:b3:dc:57:e1:31:76:
 | 
			
		||||
                    b4:e0:a4:69:7e:f2:6d:34:ae:b9:8d:74:26:7b:d9:
 | 
			
		||||
                    f6:07:00:ef:4b:36:61:b3:ef:7a:a1:36:3a:b6:d0:
 | 
			
		||||
                    9e:f8:b8:a9:0d:4c:30:a2:ed:eb:ab:6b:eb:2e:e2:
 | 
			
		||||
                    0b:28:be:f7:04:b1:e9:e0:84:d6:5d:31:77:7c:dc:
 | 
			
		||||
                    d2:1f:d4:1d:71:6f:6f:6c:6d:1b:bf:31:e2:5b:c3:
 | 
			
		||||
                    52:d0:14:fc:8b:fb:45:ea:41:ec:ca:c7:3b:67:12:
 | 
			
		||||
                    c4:df
 | 
			
		||||
                Exponent: 65537 (0x10001)
 | 
			
		||||
        X509v3 extensions:
 | 
			
		||||
            X509v3 Subject Alternative Name: 
 | 
			
		||||
                DNS:web.nginx-proxy.tld
 | 
			
		||||
    Signature Algorithm: sha256WithRSAEncryption
 | 
			
		||||
         4e:48:7d:81:66:ba:2f:50:3d:24:42:61:3f:1f:de:cf:ec:1b:
 | 
			
		||||
         1b:bd:0a:67:b6:62:c8:79:9d:31:a0:fd:a9:61:ce:ff:69:bf:
 | 
			
		||||
         0e:f4:f7:e6:15:2b:b0:f0:e4:f2:f4:d2:8f:74:02:b1:1e:4a:
 | 
			
		||||
         a8:6f:26:0a:77:32:29:cf:dc:b5:61:82:3e:58:47:61:92:f0:
 | 
			
		||||
         0c:20:25:f8:41:4d:34:09:44:bc:39:9e:aa:82:06:83:13:8b:
 | 
			
		||||
         1e:2c:3d:cf:cd:1a:f7:77:39:38:e0:a3:a7:f3:09:da:02:8d:
 | 
			
		||||
         73:75:38:b4:dd:24:a7:f9:03:db:98:c6:88:54:87:dc:e0:65:
 | 
			
		||||
         4c:95:c5:39:9c:00:30:dc:f0:d3:2c:19:ca:f1:f4:6c:c6:d9:
 | 
			
		||||
         b5:c4:4a:c7:bc:a1:2e:88:7b:b5:33:d0:ff:fb:48:5e:3e:29:
 | 
			
		||||
         fa:58:e5:03:de:d8:17:de:ed:96:fc:7e:1f:fe:98:f6:be:99:
 | 
			
		||||
         38:87:51:c0:d3:b7:9a:0f:26:92:e5:53:1b:d6:25:4c:ac:48:
 | 
			
		||||
         f3:29:fc:74:64:9d:07:6a:25:57:24:aa:a7:70:fa:8f:6c:a7:
 | 
			
		||||
         2b:b7:9d:81:46:10:32:93:b9:45:6d:0f:16:18:b2:21:1f:f3:
 | 
			
		||||
         30:24:62:3f:e1:6c:07:1d:71:28:cb:4c:bb:f5:39:05:f9:b2:
 | 
			
		||||
         5b:a0:05:1b
 | 
			
		||||
-----BEGIN CERTIFICATE-----
 | 
			
		||||
MIIC+zCCAeOgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwPzEfMB0GA1UECgwWbmdp
 | 
			
		||||
bngtcHJveHkgdGVzdCBzdWl0ZTEcMBoGA1UEAwwTd3d3Lm5naW54LXByb3h5LnRs
 | 
			
		||||
ZDAeFw0xNzAxMTMwMzA2MzlaFw00NDA1MzEwMzA2MzlaMB4xHDAaBgNVBAMME3dl
 | 
			
		||||
Yi5uZ2lueC1wcm94eS50bGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
 | 
			
		||||
AQCVVscNSKUrPGVJPybhOCthMFbkktdj4OutrPkzm7Ix8TkTC+VDe8W9ioXI2T3Y
 | 
			
		||||
rHG6FueBlrKrrsbAvb6n0ZaPspvfuvlNoTt+IUrNtkX5bXlQvySPwWvBCRlbYsuW
 | 
			
		||||
6AQUIOjUFmJq8jfBluKdUwULUh3naJLbizZozY1bAv8S8KxdDMTgelWiSWCf/0cf
 | 
			
		||||
UnNVTdTy0WKi9FCdyfbxQ7PcV+ExdrTgpGl+8m00rrmNdCZ72fYHAO9LNmGz73qh
 | 
			
		||||
Njq20J74uKkNTDCi7eura+su4gsovvcEsenghNZdMXd83NIf1B1xb29sbRu/MeJb
 | 
			
		||||
w1LQFPyL+0XqQezKxztnEsTfAgMBAAGjIjAgMB4GA1UdEQQXMBWCE3dlYi5uZ2lu
 | 
			
		||||
eC1wcm94eS50bGQwDQYJKoZIhvcNAQELBQADggEBAE5IfYFmui9QPSRCYT8f3s/s
 | 
			
		||||
Gxu9Cme2Ysh5nTGg/alhzv9pvw709+YVK7Dw5PL00o90ArEeSqhvJgp3MinP3LVh
 | 
			
		||||
gj5YR2GS8AwgJfhBTTQJRLw5nqqCBoMTix4sPc/NGvd3OTjgo6fzCdoCjXN1OLTd
 | 
			
		||||
JKf5A9uYxohUh9zgZUyVxTmcADDc8NMsGcrx9GzG2bXESse8oS6Ie7Uz0P/7SF4+
 | 
			
		||||
KfpY5QPe2Bfe7Zb8fh/+mPa+mTiHUcDTt5oPJpLlUxvWJUysSPMp/HRknQdqJVck
 | 
			
		||||
qqdw+o9spyu3nYFGEDKTuUVtDxYYsiEf8zAkYj/hbAcdcSjLTLv1OQX5slugBRs=
 | 
			
		||||
-----END CERTIFICATE-----
 | 
			
		||||
							
								
								
									
										27
									
								
								test/test_headers/certs/default.key
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								test/test_headers/certs/default.key
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
-----BEGIN RSA PRIVATE KEY-----
 | 
			
		||||
MIIEogIBAAKCAQEAlVbHDUilKzxlST8m4TgrYTBW5JLXY+Drraz5M5uyMfE5Ewvl
 | 
			
		||||
Q3vFvYqFyNk92KxxuhbngZayq67GwL2+p9GWj7Kb37r5TaE7fiFKzbZF+W15UL8k
 | 
			
		||||
j8FrwQkZW2LLlugEFCDo1BZiavI3wZbinVMFC1Id52iS24s2aM2NWwL/EvCsXQzE
 | 
			
		||||
4HpVoklgn/9HH1JzVU3U8tFiovRQncn28UOz3FfhMXa04KRpfvJtNK65jXQme9n2
 | 
			
		||||
BwDvSzZhs+96oTY6ttCe+LipDUwwou3rq2vrLuILKL73BLHp4ITWXTF3fNzSH9Qd
 | 
			
		||||
cW9vbG0bvzHiW8NS0BT8i/tF6kHsysc7ZxLE3wIDAQABAoIBAEmK7IecKMq7+V0y
 | 
			
		||||
3mC3GpXICmKR9cRX9XgX4LkLiZuSoXrBtuuevmhzGSMp6I0VjwQHV4a3wdFORs6Q
 | 
			
		||||
Ip3eVvj5Ck4Jc9BJAFVC6+WWR6tnwACFwOmSZRAw/O3GH2B3bdrDwiT/yQPFuLN7
 | 
			
		||||
LKoxQiCrFdLp6rh3PBosb9pMBXU7k/HUazIdgmSKg6/JIoo/4Gwyid04TF/4MI2l
 | 
			
		||||
RscxtP5/ANtS8VgwBEqhgdafRJ4KnLEpgvswgIQvUKmduVhZQlzd0LMY8FbhKVqz
 | 
			
		||||
Utg8gsXaTyH6df/nmgUIInxLMz/MKPnMkv99fS6Sp/hvYlGpLZFWBJ6unMq3lKEr
 | 
			
		||||
LMbHfIECgYEAxB+5QWdVqG2r9loJlf8eeuNeMPml4P8Jmi5RKyJC7Cww6DMlMxOS
 | 
			
		||||
78ZJfl4b3ZrWuyvhjOfX/aTq7kQaF1BI9o3KJBH8k6EtO4gI8KeNmDONyQk9zsrn
 | 
			
		||||
ru8Zwr7hVbAo8fCXxCnmPzhDLsYg6f3BVOsQWoX2SFYKZ1GvkPfIReECgYEAwu6G
 | 
			
		||||
qtgFb57Vim10ecfWGM6vrPxvyfqP+zlH/p4nR+aQ+2sFbt27D0B1byWBRZe4KQyw
 | 
			
		||||
Vq6XiQ09Fk6MJr8E8iAr9GXPPHcqlYI6bbNc6YOP3jVSKut0tQdTUOHll4kYIY+h
 | 
			
		||||
RS3VA3+BA//ADpWpywu+7RZRbaIECA+U2a224r8CgYB5PCMIixgoRaNHZeEHF+1/
 | 
			
		||||
iY1wOOKRcxY8eOU0BLnZxHd3EiasrCzoi2pi80nGczDKAxYqRCcAZDHVl8OJJdf0
 | 
			
		||||
kTGjmnrHx5pucmkUWn7s1vGOlGfgrQ0K1kLWX6hrj7m/1Tn7yOrLqbvd7hvqiTI5
 | 
			
		||||
jBVP3/+eN5G2zIf61TC4AQKBgCX2Q92jojNhsF58AHHy+/vqzIWYx8CC/mVDe4TX
 | 
			
		||||
kfjLqzJ7XhyAK/zFZdlWaX1/FYtRAEpxR+uV226rr1mgW7s3jrfS1/ADmRRyvyQ8
 | 
			
		||||
CP0k9PCmW7EmF51lptEanRbMyRlIGnUZfuFmhF6eAO4WMXHsgKs1bHg4VCapuihG
 | 
			
		||||
T1aLAoGACRGn1UxFuBGqtsh2zhhsBZE7GvXKJSk/eP7QJeEXUNpNjCpgm8kIZM5K
 | 
			
		||||
GorpL7PSB8mwVlDl18TpMm3P7nz6YkJYte+HdjO7pg59H39Uvtg3tZnIrFxNxVNb
 | 
			
		||||
YF62/yHfk2AyTgjQZQUSmDS84jq1zUK4oS90lxr+u8qwELTniMs=
 | 
			
		||||
-----END RSA PRIVATE KEY-----
 | 
			
		||||
@@ -15,8 +15,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: web-server-tokens-off.nginx-proxy.tld
 | 
			
		||||
      SERVER_TOKENS: "off"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/certs:/etc/nginx/certs:ro
 | 
			
		||||
 | 
			
		||||
  web:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -15,14 +20,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: web-server-tokens-off.nginx-proxy.tld
 | 
			
		||||
      SERVER_TOKENS: "off"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/default.crt:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/default.key:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
 | 
			
		||||
      - ./certs/web-server-tokens-off.nginx-proxy.tld.crt:/etc/nginx/certs/web-server-tokens-off.nginx-proxy.tld.crt:ro
 | 
			
		||||
      - ./certs/web-server-tokens-off.nginx-proxy.tld.key:/etc/nginx/certs/web-server-tokens-off.nginx-proxy.tld.key:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,11 @@ networks:
 | 
			
		||||
  net2:
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
      - net2
 | 
			
		||||
 | 
			
		||||
  bridge-network:
 | 
			
		||||
    image: web
 | 
			
		||||
    environment:
 | 
			
		||||
@@ -20,10 +25,4 @@ services:
 | 
			
		||||
      VIRTUAL_PORT: "8080"
 | 
			
		||||
    network_mode: host
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
      - net2
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,13 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    container_name: nginx-proxy
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTP_PORT: 8888
 | 
			
		||||
    network_mode: host
 | 
			
		||||
 | 
			
		||||
  host-network-1:
 | 
			
		||||
    image: web
 | 
			
		||||
    environment:
 | 
			
		||||
@@ -14,11 +23,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: "host-network-2.nginx-proxy.tld"
 | 
			
		||||
      VIRTUAL_PORT: "8181"
 | 
			
		||||
    network_mode: host
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTP_PORT: 8888
 | 
			
		||||
    network_mode: host
 | 
			
		||||
							
								
								
									
										5
									
								
								test/test_htpasswd/compose.base.override.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/test_htpasswd/compose.base.override.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/htpasswd:/etc/nginx/htpasswd:ro
 | 
			
		||||
@@ -6,10 +6,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: ~^regex.*\.nginx-proxy\.example$
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./htpasswd:/etc/nginx/htpasswd:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -6,10 +6,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: htpasswd.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./htpasswd:/etc/nginx/htpasswd:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: htpasswd.nginx-proxy.tld
 | 
			
		||||
      VIRTUAL_PATH: /foo/
 | 
			
		||||
      VIRTUAL_DEST: /
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./htpasswd:/etc/nginx/htpasswd:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTP_PORT: 8080
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,10 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: "*.nginx-proxy.tld"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTP_PORT: 8080
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_HTTP2: "false"
 | 
			
		||||
 | 
			
		||||
  http2-global-disabled:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,10 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: http2-global-disabled.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_HTTP2: "false"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
#  nginx-proxy:
 | 
			
		||||
#    environment:
 | 
			
		||||
#      ENABLE_HTTP3: "false"    #Disabled by default
 | 
			
		||||
 | 
			
		||||
  http3-global-disabled:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,10 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: http3-global-disabled.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    #environment:
 | 
			
		||||
    #ENABLE_HTTP3: "false"    #Disabled by default
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_HTTP3: "true"
 | 
			
		||||
 | 
			
		||||
  http3-global-enabled:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,10 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: http3-global-enabled.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_HTTP3: "true"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
#  nginx-proxy:
 | 
			
		||||
#    environment:
 | 
			
		||||
#      ENABLE_HTTP3: "false"    #Disabled by default
 | 
			
		||||
 | 
			
		||||
  http3-vhost-enabled:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -26,8 +30,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: http3-vhost-default-disabled.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								test/test_internal/compose.base.override.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/test_internal/compose.base.override.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/network_internal.conf:/etc/nginx/network_internal.conf:ro
 | 
			
		||||
@@ -15,9 +15,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "82"
 | 
			
		||||
      VIRTUAL_HOST: web2.nginx-proxy.example
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./network_internal.conf:/etc/nginx/network_internal.conf:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,3 @@ services:
 | 
			
		||||
      VIRTUAL_PATH: /web2/
 | 
			
		||||
      VIRTUAL_DEST: /
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./network_internal.conf:/etc/nginx/network_internal.conf:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,14 @@ networks:
 | 
			
		||||
        - subnet: fd00:cafe:face:feed::/64
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    networks:
 | 
			
		||||
      ipv4net:
 | 
			
		||||
        ipv4_address: 172.16.10.3
 | 
			
		||||
      dualstacknet:
 | 
			
		||||
        ipv4_address: 172.16.20.3
 | 
			
		||||
        ipv6_address: fd00:cafe:face:feed::3
 | 
			
		||||
 | 
			
		||||
  ipv4only:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -31,13 +39,3 @@ services:
 | 
			
		||||
        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
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,16 @@ networks:
 | 
			
		||||
        - subnet: fd00:cafe:face:feed::/64
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
  ipv4only:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -31,15 +41,3 @@ services:
 | 
			
		||||
        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
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,12 @@ networks:
 | 
			
		||||
        - subnet: fd00:1::/80
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_IPV6: "true"
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -26,11 +32,3 @@ services:
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_IPV6: "true"
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTPS_METHOD: nohttps
 | 
			
		||||
 | 
			
		||||
  keepalive-disabled:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -18,7 +22,7 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: keepalive-enabled.nginx-proxy.test
 | 
			
		||||
    labels:
 | 
			
		||||
      com.github.nginx-proxy.nginx-proxy.keepalive: "64"
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  keepalive-auto:
 | 
			
		||||
    image: web
 | 
			
		||||
    deploy:
 | 
			
		||||
@@ -30,9 +34,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: keepalive-auto.nginx-proxy.test
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTPS_METHOD: nohttps
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: loadbalance-disabled.nginx-proxy.tld
 | 
			
		||||
    deploy:
 | 
			
		||||
      replicas: 2
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./vhost.d:/etc/nginx/vhost.d:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/vhost.d:/etc/nginx/vhost.d:ro
 | 
			
		||||
 | 
			
		||||
  explicit-root:
 | 
			
		||||
    image: web
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ def test_log_disabled(docker_compose, nginxproxy):
 | 
			
		||||
    r = nginxproxy.get("http://nginx-proxy.test/port")
 | 
			
		||||
    assert r.status_code == 200
 | 
			
		||||
    assert r.text == "answer from port 81\n"
 | 
			
		||||
    sut_container = docker_compose.containers.get("sut")
 | 
			
		||||
    sut_container = docker_compose.containers.get("nginx-proxy")
 | 
			
		||||
    docker_logs = sut_container.logs(stdout=True, stderr=True, stream=False, follow=False)
 | 
			
		||||
    docker_logs = docker_logs.decode("utf-8").splitlines()
 | 
			
		||||
    docker_logs = [line for line in docker_logs if "GET /port" in line]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      DISABLE_ACCESS_LOGS: true
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,11 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: nginx-proxy.test
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DISABLE_ACCESS_LOGS: true
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ def test_log_format(docker_compose, nginxproxy):
 | 
			
		||||
    r = nginxproxy.get("http://nginx-proxy.test/port")
 | 
			
		||||
    assert r.status_code == 200
 | 
			
		||||
    assert r.text == "answer from port 81\n"
 | 
			
		||||
    sut_container = docker_compose.containers.get("sut")
 | 
			
		||||
    sut_container = docker_compose.containers.get("nginx-proxy")
 | 
			
		||||
    docker_logs = sut_container.logs(stdout=True, stderr=True, stream=False, follow=False)
 | 
			
		||||
    docker_logs = docker_logs.decode("utf-8").splitlines()
 | 
			
		||||
    docker_logs = [line for line in docker_logs if "GET /port" in line]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      LOG_FORMAT: '$$remote_addr - $$remote_user [$$time_local] "$$request" $$status $$body_bytes_sent "$$http_referer" "$$http_user_agent" request_time=$$request_time $$upstream_response_time'
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,11 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: nginx-proxy.test
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      LOG_FORMAT: '$$remote_addr - $$remote_user [$$time_local] "$$request" $$status $$body_bytes_sent "$$http_referer" "$$http_user_agent" request_time=$$request_time $$upstream_response_time'
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ def test_log_json_format(docker_compose, nginxproxy):
 | 
			
		||||
    r = nginxproxy.get("http://nginx-proxy.test/port")
 | 
			
		||||
    assert r.status_code == 200
 | 
			
		||||
    assert r.text == "answer from port 81\n"
 | 
			
		||||
    sut_container = docker_compose.containers.get("sut")
 | 
			
		||||
    sut_container = docker_compose.containers.get("nginx-proxy")
 | 
			
		||||
    docker_logs = sut_container.logs(stdout=True, stderr=True, stream=False, follow=False)
 | 
			
		||||
    docker_logs = docker_logs.decode("utf-8").splitlines()
 | 
			
		||||
    docker_logs = [line for line in docker_logs if "{\"time_local\":" in line]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      LOG_FORMAT: '{"time_local":"$$time_iso8601","remote_addr":"$$remote_addr","request":"$$request","upstream_addr":"$$upstream_addr"}'
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,11 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: nginx-proxy.test
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      LOG_FORMAT: '{"time_local":"$$time_iso8601","remote_addr":"$$remote_addr","request":"$$request","upstream_addr":"$$upstream_addr"}'
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ def test_log_json(docker_compose, nginxproxy):
 | 
			
		||||
    r = nginxproxy.get("http://nginx-proxy.test/port")
 | 
			
		||||
    assert r.status_code == 200
 | 
			
		||||
    assert r.text == "answer from port 81\n"
 | 
			
		||||
    sut_container = docker_compose.containers.get("sut")
 | 
			
		||||
    sut_container = docker_compose.containers.get("nginx-proxy")
 | 
			
		||||
    docker_logs = sut_container.logs(stdout=True, stderr=True, stream=False, follow=False)
 | 
			
		||||
    docker_logs = docker_logs.decode("utf-8").splitlines()
 | 
			
		||||
    docker_logs = [line for line in docker_logs if "{\"time_local\":" in line]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      LOG_JSON: 1
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,11 +10,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: nginx-proxy.test
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    container_name: sut
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      LOG_JSON: 1
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: webA.nginx-proxy.tld,webB.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,6 @@ networks:
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
      - net2
 | 
			
		||||
 
 | 
			
		||||
@@ -68,8 +68,3 @@ services:
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -52,8 +52,3 @@ services:
 | 
			
		||||
          "/customdest":
 | 
			
		||||
            port: 10002
 | 
			
		||||
            dest: "/port"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -35,8 +35,3 @@ services:
 | 
			
		||||
            port: 8080
 | 
			
		||||
          "/":
 | 
			
		||||
            port: 9000
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,3 @@ services:
 | 
			
		||||
          "/foo":
 | 
			
		||||
            port: 9191
 | 
			
		||||
            dest: "/"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,10 @@ networks:
 | 
			
		||||
        - subnet: fd00:1::/80
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -25,10 +29,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: web2.nginx-proxy.tld
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
    networks:
 | 
			
		||||
      - net1
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "80 81"
 | 
			
		||||
      VIRTUAL_HOST: "web.nginx-proxy.tld"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: "web.nginx-proxy.tld"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: "web.nginx-proxy.tld"
 | 
			
		||||
      VIRTUAL_PORT: "90"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80 90"
 | 
			
		||||
      VIRTUAL_HOST: "web.nginx-proxy.tld"
 | 
			
		||||
      VIRTUAL_PORT: 90
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,14 @@ networks:
 | 
			
		||||
        - subnet: fd00::/80
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      ENABLE_IPV6: "true"
 | 
			
		||||
    networks:
 | 
			
		||||
      net1:
 | 
			
		||||
        ipv4_address: 172.20.0.4
 | 
			
		||||
        ipv6_address: fd00::4
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    container_name: web1
 | 
			
		||||
    image: web
 | 
			
		||||
@@ -33,13 +41,3 @@ services:
 | 
			
		||||
        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
 | 
			
		||||
    networks:
 | 
			
		||||
      net1:
 | 
			
		||||
        ipv4_address: 172.20.0.4
 | 
			
		||||
        ipv6_address: fd00::4
 | 
			
		||||
 
 | 
			
		||||
@@ -23,8 +23,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "83"
 | 
			
		||||
      VIRTUAL_HOST: web.nginx-proxy.tld
 | 
			
		||||
    network_mode: "none"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: web.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: web.nginx-proxy.tld
 | 
			
		||||
    network_mode: "none"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								test/test_ssl/compose.base.override.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/test_ssl/compose.base.override.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
@@ -1,5 +1,13 @@
 | 
			
		||||
services:
 | 
			
		||||
  base: 
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/cert_selection:/etc/nginx/certs:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DEBUG_ENDPOINT: "true"
 | 
			
		||||
 | 
			
		||||
  base:
 | 
			
		||||
      image: web
 | 
			
		||||
      environment:
 | 
			
		||||
        WEB_PORTS: "80"
 | 
			
		||||
@@ -10,7 +18,7 @@ services:
 | 
			
		||||
      environment:
 | 
			
		||||
        WEB_PORTS: "80"
 | 
			
		||||
        VIRTUAL_HOST: "www.nginx-proxy.tld"
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  sub-www:
 | 
			
		||||
      image: web
 | 
			
		||||
      environment:
 | 
			
		||||
@@ -22,12 +30,3 @@ services:
 | 
			
		||||
      environment:
 | 
			
		||||
        WEB_PORTS: "80"
 | 
			
		||||
        VIRTUAL_HOST: "web1.nginx-proxy.tld"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./cert_selection:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      DEBUG_ENDPOINT: "true"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,7 @@
 | 
			
		||||
networks:
 | 
			
		||||
  default:
 | 
			
		||||
    name: test_dhparam-net
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  web5:
 | 
			
		||||
    image: web
 | 
			
		||||
@@ -61,7 +61,7 @@ def require_openssl(required_version):
 | 
			
		||||
@require_openssl("1.0.2")
 | 
			
		||||
def negotiate_cipher(sut_container, additional_params='', grep='Cipher is'):
 | 
			
		||||
    sut_container.reload()
 | 
			
		||||
    host = f"{sut_container.attrs['NetworkSettings']['Networks']['test_ssl_default']['IPAddress']}:443"
 | 
			
		||||
    host = f"{sut_container.attrs['NetworkSettings']['Networks']['test_dhparam-net']['IPAddress']}:443"
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        # Enforce TLS 1.2 as newer versions don't support custom dhparam or ciphersuite preference.
 | 
			
		||||
 
 | 
			
		||||
@@ -44,9 +44,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: http3-vhost-enabled.nginx-proxy.tld
 | 
			
		||||
    labels:
 | 
			
		||||
      com.github.nginx-proxy.nginx-proxy.http3.enable: "true"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTP_PORT: 8080
 | 
			
		||||
      HTTPS_PORT: 8443
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -6,13 +11,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: "*.nginx-proxy.tld"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
    environment:
 | 
			
		||||
      HTTP_PORT: 8080
 | 
			
		||||
      HTTPS_PORT: 8443
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "82"
 | 
			
		||||
      VIRTUAL_HOST: "web2.nginx-proxy.tld"
 | 
			
		||||
      HTTPS_METHOD: nohttp
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -7,9 +7,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "83"
 | 
			
		||||
      VIRTUAL_HOST: "web.nginx-proxy.tld"
 | 
			
		||||
      HTTPS_METHOD: nohttps
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "83"
 | 
			
		||||
      VIRTUAL_HOST: "web3.nginx-proxy.tld"
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -18,10 +18,3 @@ services:
 | 
			
		||||
      VIRTUAL_HOST: "www.nginx-proxy.tld"
 | 
			
		||||
      VIRTUAL_PATH: "/web2/"
 | 
			
		||||
      VIRTUAL_DEST: "/"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,16 @@
 | 
			
		||||
version: "3"
 | 
			
		||||
# In this scenario, we have a wildcard certificate for `*.web.nginx-proxy.tld` and 3 web containers:
 | 
			
		||||
# - 1.web.nginx-proxy.tld
 | 
			
		||||
# - 2.web.nginx-proxy.tld
 | 
			
		||||
# - 3.web.nginx-proxy.tld
 | 
			
		||||
#
 | 
			
		||||
# We want web containers 1 and 2 to support SSL, but 3 should not (using `HTTPS_METHOD=nohttps`)
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
 | 
			
		||||
  proxy:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/certs_wildcard_nohttps:/etc/nginx/certs:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 | 
			
		||||
  web1:
 | 
			
		||||
    image: web
 | 
			
		||||
@@ -6,10 +6,3 @@ services:
 | 
			
		||||
    environment:
 | 
			
		||||
      WEB_PORTS: "81"
 | 
			
		||||
      VIRTUAL_HOST: "*.nginx-proxy.tld"
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs:/etc/nginx/certs:ro
 | 
			
		||||
      - ./acme_root:/usr/share/nginx/html:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
In this scenario, we have a wildcard certificate for `*.web.nginx-proxy.tld` and 3 web containers:
 | 
			
		||||
- 1.web.nginx-proxy.tld
 | 
			
		||||
- 2.web.nginx-proxy.tld
 | 
			
		||||
- 3.web.nginx-proxy.tld
 | 
			
		||||
 | 
			
		||||
We want web containers 1 and 2 to support SSL, but 3 should not (using `HTTPS_METHOD=nohttps`)
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
challenge-teststring
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ${PYTEST_MODULE_PATH}/certs:/etc/nginx/certs:ro
 | 
			
		||||
@@ -7,10 +7,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: web.nginx-proxy.tld
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      TRUST_DOWNSTREAM_PROXY: "false"
 | 
			
		||||
 | 
			
		||||
  web:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -7,12 +11,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: web.nginx-proxy.tld
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    environment:
 | 
			
		||||
      TRUST_DOWNSTREAM_PROXY: "false"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
services:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    environment:
 | 
			
		||||
      TRUST_DOWNSTREAM_PROXY: "true"
 | 
			
		||||
 | 
			
		||||
  web:
 | 
			
		||||
    image: web
 | 
			
		||||
    expose:
 | 
			
		||||
@@ -7,12 +11,3 @@ services:
 | 
			
		||||
      WEB_PORTS: "80"
 | 
			
		||||
      VIRTUAL_HOST: web.nginx-proxy.tld
 | 
			
		||||
      HTTPS_METHOD: noredirect
 | 
			
		||||
 | 
			
		||||
  sut:
 | 
			
		||||
    image: nginxproxy/nginx-proxy:test
 | 
			
		||||
    environment:
 | 
			
		||||
      TRUST_DOWNSTREAM_PROXY: "true"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/tmp/docker.sock:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
 | 
			
		||||
      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user