fix: Increase ingress and server body size limits to resolve 413 errors and add related documentation.
All checks were successful
Build and Deploy / build (push) Successful in 1m30s

This commit is contained in:
2025-12-18 11:47:10 +01:00
parent 87e38bd0a3
commit e31323859f
5 changed files with 22 additions and 4 deletions

View File

@@ -109,3 +109,4 @@
- [Final Pool Layout Fix](./devlog/2025-12-18-043500_pool_sizing_final.md): Completed. Overhauled flex layout for Horizontal Pool to ensure card images scale 1:1 with panel height during resize, removing layout-blocking transitions. - [Final Pool Layout Fix](./devlog/2025-12-18-043500_pool_sizing_final.md): Completed. Overhauled flex layout for Horizontal Pool to ensure card images scale 1:1 with panel height during resize, removing layout-blocking transitions.
- [Pool Overflow Constraint](./devlog/2025-12-18-044500_pool_overflow_fix.md): Completed. Enforce flex shrinkage with `min-h-0` and `overflow-hidden` to strictly bind card height to resizeable panel. - [Pool Overflow Constraint](./devlog/2025-12-18-044500_pool_overflow_fix.md): Completed. Enforce flex shrinkage with `min-h-0` and `overflow-hidden` to strictly bind card height to resizeable panel.
- [Resize Persistence](./devlog/2025-12-18-050000_resize_persistence.md): Completed. Implemented `localStorage` persistence for Sidebars and Pool Panels in both Draft and Deck Views. - [Resize Persistence](./devlog/2025-12-18-050000_resize_persistence.md): Completed. Implemented `localStorage` persistence for Sidebars and Pool Panels in both Draft and Deck Views.
- [Resolve 413 Errors](./devlog/2025-12-18-112633_resolve_413_errors.md): Completed. Updated Helm ingress annotations and server limits to allow unlimited upload size.

View File

@@ -0,0 +1,16 @@
# Resolve 413 Request Entity Too Large Errors
## Objective
Fix the "413 Request Entity Too Large" errors occurring during large uploads or requests after application deployment.
## Changes
1. **Helm Chart Configuration (`helm/mtg-draft-maker/values.yaml`)**:
* Added Nginx Ingress annotation `nginx.ingress.kubernetes.io/proxy-body-size: "0"` to disable the body size limit check at the ingress level.
2. **Server Configuration (`src/server/index.ts`)**:
* Increased `maxHttpBufferSize` for Socket.IO to 1GB.
* Increased `express.json` body parser limit to 1000MB to support large JSON payloads (e.g., extensive card lists).
## Verification
* **Infrastructure**: Ensure the application is redeployed with the updated Helm chart for the ingress annotation to take effect.
* **Application**: Verify that large payloads can be sent to the server without triggering 413 errors.

View File

@@ -43,7 +43,8 @@ service:
ingress: ingress:
enabled: false enabled: false
className: "" className: ""
annotations: {} annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
# kubernetes.io/ingress.class: nginx # kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true" # kubernetes.io/tls-acme: "true"
hosts: hosts:

View File

@@ -82,7 +82,7 @@ define(['./workbox-5a5d9309'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812" "revision": "3ca0b8505b4bec776b69afdba2768812"
}, { }, {
"url": "index.html", "url": "index.html",
"revision": "0.7uegorivig4" "revision": "0.afjkvsk6jt"
}], {}); }], {});
workbox.cleanupOutdatedCaches(); workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

View File

@@ -17,7 +17,7 @@ const __dirname = path.dirname(__filename);
const app = express(); const app = express();
const httpServer = createServer(app); const httpServer = createServer(app);
const io = new Server(httpServer, { const io = new Server(httpServer, {
maxHttpBufferSize: 300 * 1024 * 1024, // 300MB maxHttpBufferSize: 1024 * 1024 * 1024, // 1GB (Unlimited for practical use)
cors: { cors: {
origin: "*", // Adjust for production, origin: "*", // Adjust for production,
methods: ["GET", "POST"] methods: ["GET", "POST"]
@@ -33,7 +33,7 @@ const packGeneratorService = new PackGeneratorService();
const cardParserService = new CardParserService(); const cardParserService = new CardParserService();
const PORT = process.env.PORT || 3000; const PORT = process.env.PORT || 3000;
app.use(express.json({ limit: '50mb' })); // Increase limit for large card lists app.use(express.json({ limit: '1000mb' })); // Increase limit for large card lists
// Serve static images (Nested) // Serve static images (Nested)
app.use('/cards', express.static(path.join(__dirname, 'public/cards'))); app.use('/cards', express.static(path.join(__dirname, 'public/cards')));