Here is an example docker-compose with OSS nginx
version: '3'
networks:
traefik:
services:
nginx:
image: nginx
environment:
- NGINX_HOST=nginx.docker.localhost
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.nginx.entrypoints=web"
- "traefik.http.routers.nginx.rule=HostRegexp(`{domain:.+}`)"
- "traefik.http.routers.nginx.priority=1"
- "traefik.http.routers.nginx.service=nginx"
- "traefik.http.services.nginx.loadbalancer.server.port=80"
networks:
- traefik
traefik:
image: "traefik:v2.8"
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.entrypoints=web"
- "traefik.http.routers.api.rule=Host(`traefik.docker.localhost`)"
- "traefik.http.routers.api.service=api@internal"
command:
- --providers.docker
- --entryPoints.web.address=:80
- --entryPoints.websecure.address=:443
- --entryPoints.web.forwardedHeaders.insecure
- --api.dashboard=true
- --log.level=DEBUG
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "80:80"
- "443:443"
networks:
- traefik
It really doesn't matter what port nginx is listening on but you need to inform Traefik through the service label as seen in he example.