A successful server-side S3 upload does not prove that a browser preview can read the file. Learn how CORS separates these two requests and how to diagnose the failure.
Tag Archives: backend
Why Nginx Says “Host Not Found in Upstream” in Docker
A practical guide to diagnosing Docker DNS, network, and startup-order problems behind Nginx upstream resolution errors.
Why Audit Logs and Error Logs Should Be Separate
Audit history and technical error logs serve different purposes. Separating them improves search, performance, retention, and privacy.
Why a Code Editor Can Be Empty in a Filament Infolist
A Filament code editor can stay empty in an infolist because form state and record-display state are hydrated differently.
Why an API Gateway Can Return 502 While the Web Portal Works
A working web portal does not prove its API service is running. A 502 usually points to a broken or unavailable upstream service behind the gateway.
How to Route a Private LAN Through a WireGuard Client
A WireGuard tunnel needs route ownership, forwarding, and a valid return path before other VPN peers can reach a private LAN behind one client.
How to Separate Face Matching from Membership Validation
Face recognition confirms identity; a separate authorization system should decide whether that person currently has access.
How to Wrap Mixed CJK and English Text in Generated Images
The main lesson is simple: mixed Japanese, Chinese, Korean, and English text needs more than ordinary word wrapping. A reliable image renderer must choose a font with the right glyphs, preserve Latin words, allow CJK text to break between characters, and invalidate old cached images after the logic changes. Why normal wrapping fails English text Continue reading “How to Wrap Mixed CJK and English Text in Generated Images”
How to Prevent Root-Owned Laravel Logs in Docker
Prevent Laravel daily logs from becoming root-owned by running Artisan, schedulers, and queue processes as the container’s application user.
How to Keep Sequence Numbers Continuous Across Grouped Data
Keep the group identifier and the global sequence number separate. This prevents numbering from restarting when data is divided into sections.
