mirror of
https://github.com/nginx-proxy/nginx-proxy
synced 2024-06-01 04:16:20 +02:00
bd1aeda540
Syntax: VIRTUAL_PORT = [ <virtual_port> | <multiport> ]; multiport = port, { ",", port }; port = <virtual_port> [ ":", <virtual_path> [ ":", <virtual_dest> ]]; Example with multiport syntax: VIRTUAL_HOST: "multiport.example.com" VIRTUAL_PORT: "9220:~ ^/(admin|fonts?|images|webmin)/,10901,20901:/ws2p,30901:/gva/playground" Produces: # multiport.example.com:10901 upstream multiport.example.com-10901 { # Exposed ports: [{ 10901 tcp } { 20901 tcp } { 30901 tcp } { 9220 tcp }] # Default virtual port: 80 # VIRTUAL_PORT: 10901 ## Can be connected with "docker-gen-bridge" network # blah server 172.29.0.5:10901; } # multiport.example.com:20901/ws2p upstream multiport.example.com-5c7ebef820fe004e45e3af1d0c47971594d028b2-20901 { # Exposed ports: [{ 10901 tcp } { 20901 tcp } { 30901 tcp } { 9220 tcp }] # Default virtual port: 80 # VIRTUAL_PORT: 20901 ## Can be connected with "docker-gen-bridge" network # blah server 172.29.0.5:20901; } # multiport.example.com:30901/gva/playground upstream multiport.example.com-1f02ce2421b17d828edaabfc3014360891bb0be3-30901 { # Exposed ports: [{ 10901 tcp } { 20901 tcp } { 30901 tcp } { 9220 tcp }] # Default virtual port: 80 # VIRTUAL_PORT: 30901 ## Can be connected with "docker-gen-bridge" network # blah server 172.29.0.5:30901; } # multiport.example.com:9220~ ^/(admin|fonts?|images|webmin)/ upstream multiport.example.com-cae8bfc2ea1fe6bb6fda08727ab065e8fed98aa2-9220 { # Exposed ports: [{ 10901 tcp } { 20901 tcp } { 30901 tcp } { 9220 tcp }] # Default virtual port: 80 # VIRTUAL_PORT: 9220 ## Can be connected with "docker-gen-bridge" network # blah server 172.29.0.5:9220; } server { server_name multiport.example.com; access_log /var/log/nginx/access.log vhost; listen 80 ; location / { proxy_pass http://multiport.example.com-10901; } location /ws2p { proxy_pass http://multiport.example.com-5c7ebef820fe004e45e3af1d0c47971594d028b2-20901/; } location /gva/playground { proxy_pass http://multiport.example.com-1f02ce2421b17d828edaabfc3014360891bb0be3-30901; } location ~ ^/(admin|fonts?|images|webmin)/ { proxy_pass http://multiport.example.com-cae8bfc2ea1fe6bb6fda08727ab065e8fed98aa2-9220; } } This feature is discussed in that upstream issue: https://github.com/nginx-proxy/nginx-proxy/issues/1504
27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
import pytest
|
|
|
|
|
|
def test_port_80_is_server_by_location_root(docker_compose, nginxproxy):
|
|
r = nginxproxy.get("http://web.nginx-proxy.tld/port")
|
|
assert r.status_code == 200
|
|
assert "answer from port 80\n" in r.text
|
|
|
|
def test_port_81_is_server_by_location_slash81(docker_compose, nginxproxy):
|
|
r = nginxproxy.get("http://web.nginx-proxy.tld/81/port")
|
|
assert r.status_code == 200
|
|
assert "answer from port 81\n" in r.text
|
|
|
|
def test_port_82_is_server_by_location_slash82_with_dest_slashport(docker_compose, nginxproxy):
|
|
r = nginxproxy.get("http://web.nginx-proxy.tld/82")
|
|
assert r.status_code == 200
|
|
assert "answer from port 82\n" in r.text
|
|
|
|
def test_port_83_is_server_by_regex_location_slash83_with_rewrite_in_custom_location_file(docker_compose, nginxproxy):
|
|
# The custom location file with rewrite is requested because when
|
|
# location is specified using a regex then proxy_pass should be
|
|
# specified without a URI
|
|
# see http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
|
|
r = nginxproxy.get("http://web.nginx-proxy.tld/83/port")
|
|
assert r.status_code == 200
|
|
assert "answer from port 83\n" in r.text
|