Middleware scripts act as intermediaries within the CDN request workflow, allowing you to insert custom logic that modifies requests or responses as they pass through the CDN.Documentation Index
Fetch the complete documentation index at: https://docs.bunny.net/llms.txt
Use this file to discover all available pages before exploring further.
Use cases
- Authentication and authorization — Verify credentials and manage session tokens at the edge
- Header injection and manipulation — Add, modify, or remove HTTP headers on requests and responses
- Response body transformation — Rewrite HTML, inject scripts, or modify content before delivery
- A/B testing and feature flags — Route users to different versions based on headers or cookies
- Request routing and redirects — Direct traffic based on path, geolocation, or custom logic
- Security enhancements — Implement rate limiting, IP filtering, or bot protection
Benefits
Middleware scripts provide the flexibility to integrate complex logic into the CDN request flow without modifying backend infrastructure. By processing requests and responses directly at the edge, these scripts improve the overall speed and efficiency of content delivery while reducing reliance on backend processing power.The servePullZone function
The servePullZone function creates a middleware handler that integrates with your Pull Zone. It returns a chainable object for adding request and response middleware.
Function signature
| Option | Type | Description |
|---|---|---|
url | string | The origin URL to proxy requests to. Only used during local development; in production, the Pull Zone origin is used. |
The
url option is only used during local development. When deployed to
bunny.net, requests are proxied to the origin configured in your Pull Zone
settings.Middleware methods
TheservePullZone function returns a PullZoneHandler object with chainable middleware methods:
onOriginRequest
Intercepts requests before they are sent to the origin server. You can modify the request or short-circuit by returning a response directly.
| Property | Type | Description |
|---|---|---|
ctx.request | Request | The incoming request object |
- Return
Promise<Request>to continue to the origin with the (modified) request - Return
Promise<Response>to short-circuit and respond immediately without hitting the origin
onOriginResponse
Intercepts responses from the origin server before they are sent to the client. Modifications occur before the response is cached.
| Property | Type | Description |
|---|---|---|
ctx.request | Request | The original request object |
ctx.response | Response | The response from the origin server |
- Return
Promise<Response>with the (modified) response to send to the client
Workflow
When a client makes a request to a Pull Zone, the request passes through middleware at different stages:onOriginRequest- Called before the request is sent to the origin. Modify the request or return a response to short-circuit.- Origin fetch - The request is sent to your origin server (skipped if short-circuited).
onOriginResponse- Called after the origin responds. Modify the response before it’s sent to the client and cached.
