This commit is contained in:
Christoph Wempe 2021-05-13 16:59:47 -07:00 committed by GitHub
commit af691a68fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 4 deletions

View file

@ -163,6 +163,22 @@ nginx-proxy will then redirect all requests to a container where `VIRTUAL_HOST`
$ docker run -d -e VIRTUAL_HOST=foo.bar.com nginx
### Non-Docker Host
If you want to proxy a web server that is not a docker conatiner but still want the benefit of [jwilder/docker-gen](https://index.docker.io/u/jwilder/docker-gen/) and [letsencrypt-nginx-proxy-companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion) you can use a dummy container that just provideds the necessary upstream address to generate the nginx config.
Start a [dummy container](https://hub.docker.com/r/cwempe/docker-dummy/) and define `VIRTUAL_HOST`, `UPSTREAM_NAME` (and `VIRTUAL_PORT` if the port is not 80) with the address of your web server.
Make sure nginx is able to connect to the web server.
```console
$ docker run -d \
-e VIRTUAL_HOST=foo.bar.com \
-e VIRTUAL_PORT=8080 \
-e UPSTREAM_NAME=webserver.local \
--rm \
cwempe/docker-dummy:latest
```
### Separate Containers
nginx-proxy can also be run as two separate containers using the [jwilder/docker-gen](https://hub.docker.com/r/jwilder/docker-gen)

View file

@ -16,7 +16,13 @@
{{ end }}
{{ else if .Network }}
# {{ .Container.Name }}
{{ if .Network.IP }}
{{ if .Container.Env.UPSTREAM_NAME }}
{{ if .Container.Env.VIRTUAL_PORT }}
server {{ .Container.Env.UPSTREAM_NAME }}:{{ .Container.Env.VIRTUAL_PORT }};
{{ else }}
server {{ .Container.Env.UPSTREAM_NAME }};
{{ end }}
{{ else if .Network.IP }}
server {{ .Network.IP }} down;
{{ else }}
server 127.0.0.1 down;
@ -184,9 +190,14 @@ upstream {{ $upstream_name }} {
{{ range $knownNetwork := $CurrentContainer.Networks }}
{{ range $containerNetwork := $container.Networks }}
{{ if (and (ne $containerNetwork.Name "ingress") (or (eq $knownNetwork.Name $containerNetwork.Name) (eq $knownNetwork.Name "host"))) }}
## Can be connected with "{{ $containerNetwork.Name }}" network
{{ if (and (ne $containerNetwork.Name "ingress") (or (or (eq $knownNetwork.Name $containerNetwork.Name) (eq $knownNetwork.Name "host")) $container.Env.UPSTREAM_NAME)) }}
{{/* Define $upstream_name if the host is not a docker container */}}
{{ if $container.Env.UPSTREAM_NAME }}
{{ $upstream_name := $container.Env.UPSTREAM_NAME }}
## Host is not a docker container
{{ else }}
## Can be connected with "{{ $containerNetwork.Name }}" network
{{ end }}
{{/* If only 1 port exposed, use that */}}
{{ if eq $addrLen 1 }}
{{ $address := index $container.Addresses 0 }}