Kombinasikan Beberapa Middleware dengan Middleware Chain

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