mirror of
https://github.com/foomo/next-proxy-middleware.git
synced 2025-10-16 12:35:36 +00:00
89 lines
2.4 KiB
Markdown
89 lines
2.4 KiB
Markdown

|
|

|
|
[](https://github.com/foomo/next-proxy-middleware/actions/workflows/test.yml)
|
|
|
|
# @foomo/next-proxy-middleware
|
|
|
|
A Next.js middleware for proxying requests to external services with advanced configuration options.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
npm install @foomo/next-proxy-middleware
|
|
```
|
|
|
|
## Usage
|
|
|
|
Import the middleware and configuration type in your Next.js middleware file:
|
|
|
|
```typescript
|
|
import {
|
|
createProxyMiddleware,
|
|
DevProxyConfig,
|
|
} from "@foomo/next-proxy-middleware";
|
|
```
|
|
|
|
## Configuration
|
|
|
|
The `DevProxyConfig` type defines the following options:
|
|
|
|
```typescript
|
|
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:
|
|
|
|
```typescript
|
|
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.
|
|
|
|
_Made with ♥ [foomo](https://www.foomo.org) by [bestbytes](https://www.bestbytes.com)_
|