Added middleware for docker.

This commit is contained in:
Mike Cao 2023-04-19 08:49:16 -07:00
parent 3eabe9b958
commit ac8d8bbd1e
4 changed files with 59 additions and 1 deletions

View File

@ -12,6 +12,7 @@ RUN yarn install --frozen-lockfile
FROM node:18-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY docker/middleware.js .
COPY . .
ARG DATABASE_TYPE

46
docker/middleware.js Normal file
View File

@ -0,0 +1,46 @@
import { NextResponse } from 'next/server';
export const config = {
matcher: '/:path*',
};
function customCollectEndpoint(req) {
const collectEndpoint = process.env.COLLECT_API_ENDPOINT;
if (collectEndpoint) {
const url = req.nextUrl.clone();
const { pathname } = url;
if (pathname.endsWith(collectEndpoint)) {
url.pathname = '/api/send';
return NextResponse.rewrite(url);
}
}
}
function customScriptName(req) {
const scriptName = process.env.TRACKER_SCRIPT_NAME;
if (scriptName) {
const url = req.nextUrl.clone();
const { pathname } = url;
if (pathname.endsWith(scriptName)) {
url.pathname = '/script.js';
return NextResponse.rewrite(url);
}
}
}
export default function middleware(req) {
const fns = [customCollectEndpoint, customScriptName];
for (const fn of fns) {
const res = fn(req);
if (res) {
return res;
}
}
return NextResponse.next();
}

View File

@ -44,6 +44,17 @@ if (process.env.COLLECT_API_ENDPOINT) {
});
}
if (process.env.TRACKER_SCRIPT_NAME) {
const match = process.env.TRACKER_SCRIPT_NAME?.match(/\/?(\w+)(\.js)?/);
if (match) {
rewrites.push({
source: `/${match[0]}.js`,
destination: '/script.js',
});
}
}
const redirects = [];
if (process.env.CLOUD_MODE) {

View File

@ -1,6 +1,6 @@
{
"name": "umami",
"version": "2.0.0",
"version": "2.1.0",
"description": "A simple, fast, privacy-focused alternative to Google Analytics.",
"author": "Mike Cao <mike@mikecao.com>",
"license": "MIT",