mirror of
https://github.com/foomo/next-proxy-middleware.git
synced 2025-10-16 12:35:36 +00:00
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 4 to 5 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> |
||
|---|---|---|
| .github | ||
| src | ||
| .editorconfig | ||
| .gitignore | ||
| biome.json | ||
| bun.lock | ||
| bunfig.toml | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
@foomo/next-proxy-middleware
A Next.js middleware for proxying requests to external services with advanced configuration options.
Installation
npm install @foomo/next-proxy-middleware
Usage
Import the middleware and configuration type in your Next.js middleware file:
import {
createProxyMiddleware,
DevProxyConfig,
} from "@foomo/next-proxy-middleware";
Configuration
The DevProxyConfig type defines the following options:
export type DevProxyConfig = {
debug?: boolean; // Enable debug logging
disable?: boolean; // Disable the proxy entirely
remoteUrl: string | ((request: NextRequest) => string); // Remote URL or function to generate it
allowResponseCompression?: boolean; // Allow response compression (default: false)
overrideHostHeader?: boolean; // Override host header (default: true)
overrideCookieDomain?: false | string; // Domain to use for cookies or false to disable
basicAuth?: {
authHeader: string; // Authorization header value
};
cfTokenAuth?: {
clientId: string;
clientSecret: string;
};
};
Example
Here's an example of how to use the middleware in your middleware.ts file:
import {
createProxyMiddleware,
DevProxyConfig,
} from "@foomo/next-proxy-middleware";
const proxyConfig: DevProxyConfig = {
remoteUrl: "https://api.example.com",
basicAuth: {
authHeader: "Basic abc123==",
},
overrideCookieDomain: "example.com",
};
export function middleware(request: NextRequest) {
if (request.nextUrl.pathname.match("^/(api|webhooks)/")) {
return proxyMiddleware(request);
}
return request;
}
export const config = {
matcher: ["/api/:path*"],
};
const proxyMiddleware = createProxyMiddleware(proxyConfig);
Contributing
Contributions are welcome! Please fork the repository and submit a pull request.
License
Distributed under MIT License, please see license file within the code for more details.