Middleware Chain memungkinkan Anda menentukan dan kombinasikan beberapa konfig middleware lainnya seperti headers
, inflightreq
, ipwhitelist
dan lain lain.
Hal ini akan membuat penggunaan pada grup atau HTTP router yang sama menjadi lebih mudah.
Berikut ini merupakan contoh penerapan beberapa middleware untuk menambahkan headers, melimit koneksi(inflightreq), dan melimit akses berdasarkan IP(ipwhitelist) menggunakan docker-compose.
Pastikan traefik di server Anda sudah berjalan.
version: "3.9"
networks:
public:
external: true
private:
external: true
services:
wordpress:
image: "wordpress:latest"
environment:
WORDPRESS_DB_HOST: db_mysql
WORDPRESS_DB_USER: web1
WORDPRESS_DB_PASSWORD: web1
WORDPRESS_DB_NAME: web1
networks:
- public
- private
labels:
- "traefik.enable=true"
- "traefik.docker.network=public"
- "traefik.http.routers.wordpress.rule=Host(`example.com`)"
- "traefik.http.routers.wordpress.entrypoints=web"
- "traefik.http.routers.wordpress.middlewares=secured"
- "traefik.http.middlewares.secured.chain.middlewares=xss,ipallow,flood"
- "traefik.http.services.wordpress.loadbalancer.server.port=80"
- "traefik.http.middlewares.xss.headers.browserxssfilter=true"
- "traefik.http.middlewares.xss.headers.contenttypenosniff=true"
- "traefik.http.middlewares.xss.headers.customframeoptionsvalue=SAMEORIGIN"
- "traefik.http.middlewares.xss.headers.referrerpolicy=same-origin"
- "traefik.http.middlewares.xss.headers.contentsecuritypolicy=frame-ancestors http://web5.srv1.de"
- "traefik.http.middlewares.flood.inflightreq.amount=10"
- "traefik.http.middlewares.ipallow.ipwhitelist.sourcerange=192.168.1.7,127.0.0.1/32"
volumes:
- wordpress:/var/www/html
volumes:
wordpress:
Agar beberapa middleware dapat diterapkan pada satu router, tambahkan label traefik.http.middlewares.<name>.chain.middlewares
lalu diisi dengan nama dari masing middleware
yang dibuat
traefik.http.middlewares.secured.chain.middlewares=xss,ipallow,flood
Terakhir tambahkan label traefik.http.routers.<name>.middlewares
lalu diisi dengan nama dari middlewares chain.
traefik.http.routers.wordpress.middlewares=secured