90 lines
2 KiB
YAML
90 lines
2 KiB
YAML
log:
|
|
level: INFO
|
|
|
|
entryPoints:
|
|
web:
|
|
# http
|
|
address: ':80'
|
|
http:
|
|
# https://doc.traefik.io/traefik/routing/entrypoints/#entrypoint
|
|
redirections:
|
|
entryPoint:
|
|
to: web-secure
|
|
|
|
web-secure:
|
|
# https
|
|
address: ':443'
|
|
|
|
flower:
|
|
address: ':5555'
|
|
|
|
certificatesResolvers:
|
|
letsencrypt:
|
|
# https://doc.traefik.io/traefik/https/acme/#lets-encrypt
|
|
acme:
|
|
email: 'ahmed10nagi@gmail.com'
|
|
storage: /etc/traefik/acme/acme.json
|
|
# https://doc.traefik.io/traefik/https/acme/#httpchallenge
|
|
httpChallenge:
|
|
entryPoint: web
|
|
|
|
http:
|
|
routers:
|
|
web-secure-router:
|
|
rule: 'Host(`learngpt.tech`) || Host(`www.learngpt.tech`)'
|
|
entryPoints:
|
|
- web-secure
|
|
middlewares:
|
|
- csrf
|
|
service: django
|
|
tls:
|
|
# https://doc.traefik.io/traefik/routing/routers/#certresolver
|
|
certResolver: letsencrypt
|
|
|
|
flower-secure-router:
|
|
rule: 'Host(`learngpt.tech`)'
|
|
entryPoints:
|
|
- flower
|
|
service: flower
|
|
tls:
|
|
# https://doc.traefik.io/traefik/master/routing/routers/#certresolver
|
|
certResolver: letsencrypt
|
|
|
|
web-media-router:
|
|
rule: '(Host(`learngpt.tech`) || Host(`www.learngpt.tech`)) && PathPrefix(`/media/`)'
|
|
entryPoints:
|
|
- web-secure
|
|
middlewares:
|
|
- csrf
|
|
service: django-media
|
|
tls:
|
|
certResolver: letsencrypt
|
|
|
|
middlewares:
|
|
csrf:
|
|
# https://doc.traefik.io/traefik/master/middlewares/http/headers/#hostsproxyheaders
|
|
# https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
|
|
headers:
|
|
hostsProxyHeaders: ['X-CSRFToken']
|
|
|
|
services:
|
|
django:
|
|
loadBalancer:
|
|
servers:
|
|
- url: http://django:5000
|
|
|
|
flower:
|
|
loadBalancer:
|
|
servers:
|
|
- url: http://flower:5555
|
|
|
|
django-media:
|
|
loadBalancer:
|
|
servers:
|
|
- url: http://nginx:80
|
|
|
|
providers:
|
|
# https://doc.traefik.io/traefik/master/providers/file/
|
|
file:
|
|
filename: /etc/traefik/traefik.yml
|
|
watch: true
|