-
Notifications
You must be signed in to change notification settings - Fork 138
Open
Description
If you're interested, I ended up implementing this via Cloudflare workers using this nginx config as inspiration.
- Create a worker and add the javascript
export default {
async fetch(request) {
return handleRequest(request)
}
}
async function handleRequest(request) {
const url = new URL(request.url)
let targetUrl
// Determine the target URL based on the request path
switch (true) {
case url.pathname === '/lib.min.js':
targetUrl = 'https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js';
break;
case url.pathname === '/lib.js':
targetUrl = 'https://cdn.mxpnl.com/libs/mixpanel-2-latest.js';
break;
case url.pathname.startsWith('/decide'):
targetUrl = 'https://decide.mixpanel.com' + url.pathname.slice('/decide'.length);
break;
default:
targetUrl = 'https://api.mixpanel.com' + url.pathname;
break;
}
// Create a new request with the target URL and the original request's settings
const modifiedRequest = new Request(targetUrl, {
method: request.method,
headers: request.headers,
body: request.body,
redirect: request.redirect,
})
// Add necessary headers to mimic the Nginx configuration
modifiedRequest.headers.set('X-Real-IP', request.headers.get('cf-connecting-ip'))
modifiedRequest.headers.set('X-Forwarded-For', request.headers.get('cf-connecting-ip'))
modifiedRequest.headers.set('X-Forwarded-Host', url.hostname)
// Fetch the modified request
const response = await fetch(modifiedRequest)
return response
}
- set the route you want in settings -> triggers -> custom domains
Cloudflare workers also support the one button deployment badges
liorsbg, kutanov, vinaysshenoy and bkleef
Metadata
Metadata
Assignees
Labels
No labels