Files
docker/pangolin/config/traefik/dynamic_config.yml

85 lines
1.9 KiB
YAML

http:
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
routers:
# HTTP to HTTPS redirect router
main-app-router-redirect:
rule: "Host(`pangolin.acedanger.com`)"
service: next-service
entryPoints:
- web
middlewares:
- redirect-to-https
# Next.js router (handles everything except API and WebSocket paths)
next-router:
rule: "Host(`pangolin.acedanger.com`) && !PathPrefix(`/api/v1`)"
service: next-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
# API router (handles /api/v1 paths)
api-router:
rule: "Host(`pangolin.acedanger.com`) && PathPrefix(`/api/v1`)"
service: api-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
# WebSocket router
ws-router:
rule: "Host(`pangolin.acedanger.com`)"
service: api-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
# Traefik Log Dashboard router
traefik-dashboard-redirect:
rule: "Host(`traefik-logs.acedanger.com`)"
service: traefik-dashboard-service
entryPoints:
- web
middlewares:
- redirect-to-https
traefik-dashboard-router:
rule: "Host(`traefik-logs.acedanger.com`)"
service: traefik-dashboard-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
services:
next-service:
loadBalancer:
servers:
- url: "http://pangolin:3002" # Next.js server
api-service:
loadBalancer:
servers:
- url: "http://pangolin:3000" # API/WebSocket server
traefik-dashboard-service:
loadBalancer:
servers:
- url: "http://traefik-dashboard:3000"
tcp:
serversTransports:
pp-transport-v1:
proxyProtocol:
version: 1
pp-transport-v2:
proxyProtocol:
version: 2