Belajar Traefik - Path & Request Middlewares
Episode 11 of 31

Belajar Traefik - Path & Request Middlewares

Episode ini membahas middleware pengubah path dan URL Traefik: AddPrefix dan StripPrefix untuk menambah atau menghapus prefiks, ReplacePath dan ReplacePathRegex untuk penggantian path, RedirectScheme untuk memaksa HTTPS, serta RedirectRegex untuk pengalihan berbasis pola regex.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Tidak selalu URL publik harus sama persis dengan path internal aplikasi. Kadang backend mengharapkan request di /api/v1, sementara pengguna datang ke /api. Kadang aplikasi di-deploy di sub-path, atau pengalihan HTTP ke HTTPS harus dilakukan sekali untuk semua layanan. Episode 11 membahas middleware yang menyelesaikan semua persoalan ini: path dan request middlewares.

Enam middleware yang kita bedah — AddPrefix, StripPrefix, ReplacePath, ReplacePathRegex, RedirectScheme, RedirectRegex — adalah alat sehari-hari untuk menyesuaikan jalur request. Setelah episode ini, kalian bisa merancang konfigurasi yang menyatukan URL publik dengan arsitektur internal tanpa mengubah kode aplikasi.

AddPrefix dan StripPrefix

Menambah Prefiks

AddPrefix menempelkan prefiks di depan path request sebelum diteruskan ke backend. Berguna saat backend mengharapkan path dengan awalan tertentu padahal pengguna datang tanpa awalan. Middleware addPrefix didefinisikan seperti ini:

Middleware AddPrefix
http:
  middlewares:
    add-v1:
      addPrefix:
        prefix: "/v1"

Router yang memakai middleware ini meneruskan request /users menjadi /v1/users di sisi backend. Ini menyerupai setup di mana satu backend menampung banyak versi API.

Menghapus Prefiks

StripPrefix melakukan kebalikannya: menghapus satu atau lebih prefiks dari path. Pola klasiknya adalah reverse proxy menuju aplikasi yang di-deploy di sub-path:

Middleware StripPrefix
http:
  middlewares:
    strip-docs:
      stripPrefix:
        prefixes:
          - /docs
        forceSlash: false

Jika pengguna mengakses /docs/installation, backend hanya menerima /installation. Daftar prefixes memungkinkan beberapa awalan sekaligus. Opsi forceSlash: true memastikan hasil tetap diawali garis miring bahkan jika hasilnya kosong. Contoh penerapan di labels Docker:

StripPrefix via labels
services:
  docs:
    image: nginx:alpine
    labels:
      - traefik.enable=true
      - traefik.http.routers.docs.rule=Host(`docs.localhost`) && PathPrefix(`/docs`)
      - traefik.http.routers.docs.middlewares=strip-docs
      - traefik.http.middlewares.strip-docs.stripprefix.prefixes=/docs
      - traefik.http.routers.docs.service=docs-svc
      - traefik.http.services.docs-svc.loadbalancer.server.port=80

ReplacePath dan ReplacePathRegex

Penggantian Path Penuh

ReplacePath mengganti seluruh path dengan satu nilai tetap. Contoh: backend lama hanya mengenali path /callback untuk segala sesuatu:

Middleware ReplacePath
http:
  middlewares:
    fix-path:
      replacePath:
        path: "/callback"

Setiap request dengan path apa pun akan diteruskan sebagai /callback. Middleware ini serba guna tapi kasar — gunakan hanya jika benar-benar perlu.

Penggantian Berbasis Regex

ReplacePathRegex jauh lebih presisi: mengganti sebagian path berdasarkan pola regex dan template:

Middleware ReplacePathRegex
http:
  middlewares:
    versioned:
      replacePathRegex:
        regex: "^/api/(v[0-9]+)/users/(.*)"
        replacement: "/${1}/internal/${2}"

Request /api/v2/users/42 menjadi /v2/internal/42. Group capture seperti ${1} dan ${2} merujuk ke bagian yang ditangkap pola regex. Middleware ini adalah pilihan tepat untuk migrasi URL bertahap di mana dua bentuk path harus hidup berdampingan.

RedirectScheme

Memaksa HTTP ke HTTPS

RedirectScheme adalah cara termudah memaksa semua trafik ke HTTPS. Ia mengembalikan redirect 301 ke URL yang sama persis dengan skema baru:

Middleware RedirectScheme
http:
  middlewares:
    https-redirect:
      redirectScheme:
        scheme: https
        permanent: true
        port: "443"

Tempelkan middleware ini pada router di entrypoint web (HTTP), sementara router sebenarnya di entrypoint websecure (HTTPS):

Router HTTP yang me-redirect
http:
  routers:
    app-redirect:
      rule: "Host(`app.example.com`)"
      entrypoints:
        - web
      middlewares:
        - https-redirect
      service: dummy

Dengan pola ini, browser yang mengunjungi http://app.example.com langsung dialihkan ke https://app.example.com sebelum request sampai ke aplikasi. Ini mencegah aplikasi melihat trafik plaintext sama sekali.

RedirectRegex

Pengalihan Berbasis Pola

RedirectRegex memindahkan pengguna dari satu pola URL ke pola lain dengan status code yang bisa diatur:

Middleware RedirectRegex
http:
  middlewares:
    old-domain:
      redirectRegex:
        regex: "^https://old.example.com/(.*)"
        replacement: "https://new.example.com/${1}"
        permanent: true

Request https://old.example.com/blog/hello dialihkan permanen ke https://new.example.com/blog/hello. Opsi permanent: true memakai status 301; nilai false memakai 302 untuk redirect sementara. Pola ini sangat umum dipakai saat migrasi domain atau restrukturisasi path publik.

Warning

Hati-hati dengan redirect dan strip yang bertumpuk. Jika RedirectScheme mengubah skema lalu RedirectRegex mengubah host dalam rantai yang sama, urutan middleware sangat menentukan URL akhir. Uji setiap kombinasi dengan curl -I untuk melihat status dan header Location.

Penutup

Inti yang harus dibawa pulang:

  • AddPrefix menambah prefiks; StripPrefix menghapus prefiks dari path.
  • ReplacePath mengganti seluruh path; ReplacePathRegex mengganti sebagian dengan regex.
  • RedirectScheme memaksa HTTP ke HTTPS dengan 301.
  • RedirectRegex mengalihkan URL berdasarkan pola dengan status permanent atau sementara.
  • Gabungan middleware path mengubah URL publik tanpa menyentuh aplikasi.
  • Selalu uji kombinasi middleware dengan curl -I.

Di episode 12 selanjutnya kita akan membahas rate limiting & circuit breaker — middleware RateLimit dengan average dan burst, InFlightReq untuk membatasi request konkuren, CircuitBreaker berbasis ekspresi error ratio, serta middleware Retry untuk percobaan ulang otomatis. Di sinilah kalian mulai melindungi backend dari lonjakan trafik.

Belajar Traefik - Path & Request Middlewares | Belajar Traefik