Recommended Free Tools
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers VPS plans with one-click Docker, NVMe storage and a 14-day free trial.
Dokku’s default 404 response is a shared host-level page. To show an app-specific page, add an Nginx override for that app, map status 404 with error_page, and serve the replacement file from a location Nginx can read. The portable method is a repository-managed nginx.conf.sigil; a host administrator can instead add an include under the app’s Dokku directory.
What Dokku does with 404 responses
Dokku generates an Nginx server block for each application. Its shared custom pages cover three categories: non-404 4xx responses, 404 responses, and 5xx responses. The shared files are stored at /var/lib/dokku/data/nginx-vhosts/dokku-errors. That is why a newly deployed app commonly displays the same Dokku-branded 404 page as other apps.
An application-specific design requires an app-level Nginx customization. The Nginx directive that performs the mapping is:
error_page 404 /404.html;
NGINX documentation describes error_page as a way to return a custom page with an error code, substitute a different status, or redirect to another URI. The directive handles an error generated by Nginx or returned by a proxied upstream; it does not create a 404 condition. A request must first be classified as not found, after which Nginx uses the configured replacement resource.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.
How the error flow works
A request normally travels through the Dokku-generated server block to the application’s web process. If Nginx cannot find a static resource, or the upstream application returns a 404, Nginx applies the configured error_page rule. It internally obtains the replacement document and sends that body to the client while retaining the original error status unless another rule explicitly changes it.
This distinction matters when testing. A custom-looking page is not enough: the response must still have an HTTP 404 status. Search engines, browser tooling, uptime checks, API clients, and caches use the status code to determine that the resource is missing. If application middleware returns a normal 200 response for every unknown route, Nginx has no 404 event to handle, so the Nginx rule cannot correct that behavior by itself.
The mapping is also different from a browser redirect. A normal error_page 404 /404.html; rule keeps the visitor on the original nonexistent URL. Configure a redirect only when you intentionally want the address bar and request target to change.
Choose where to put the override
| Method | Where it lives | Best use | Trade-offs |
|---|---|---|---|
nginx.conf.sigil |
Application source tree, or the image’s WORKDIR |
Rules that should travel with deployments and remain in source control | Must be kept compatible with the Dokku release template; replacing the template carelessly can remove required proxy or TLS directives |
nginx.conf.d/*.conf |
/home/dokku/APP/nginx.conf.d/ on the Dokku host |
Operator-managed settings that intentionally stay outside the repository | Less portable, not copied from the application repository, and must be recreated or managed separately on another host |
Use the template when the behavior is part of the application’s deployment definition. Use a host include when platform operators own the policy and do not want application commits to change it.
The choice affects more than convenience. A repository template can be reviewed with application changes, reproduced during disaster recovery, and applied consistently when the app moves to another Dokku host. A host include is useful when branding, compliance, or security rules are centrally managed, but the include must be backed up and provisioned independently. In both cases, the generated server block remains the source of truth for what Nginx is actually running, so inspect that output rather than assuming the intended file was loaded.
Before you edit anything
- Replace
APPin commands and paths with the actual Dokku application name. - Make sure the app has a running
webprocess. Dokku generates a minimal configuration that returns 502 for an undeployed app, an app without awebprocess type, or an app whose web processes are stopped. That 502 placeholder is separate from application-generated 404 responses. - Decide where the replacement file will be served. It may be a file on the Dokku host, or a file exposed by the application container, depending on the server block and deployment layout.
- Obtain the Nginx template shipped with the installed Dokku release. Dokku warns that its default template can change, so an override should be based on the version actually installed on the host.
Plan the file location before writing the rule. A path that exists in a build container is not automatically present on the Dokku host, and a host path is not automatically mounted into the application container. The root or alias used by the location must resolve to the same filesystem Nginx can access at request time. Also decide whether the page needs assets. A single self-contained HTML file is simplest; every external stylesheet, script, image, or font creates additional requests that need valid paths and can generate further errors.
Free tools Windows power users keep installed
One-click scans. No signup required.
Repository-managed method with nginx.conf.sigil
1. Put the template in the location Dokku reads
For a normal Git deployment, Dokku looks for nginx.conf.sigil at the root of the source tree. For git:from-image and git:load-image deployments, it looks in the Docker image’s WORKDIR.
In a monorepo, select a different repository-relative path. For example:
dokku nginx:set APP nginx-conf-sigil-path .dokku/nginx.conf.sigil
The path is relative to the repository. Commit the file alongside the application so a redeploy on the same or another Dokku host can reproduce the setting.
After changing this setting, redeploy or regenerate the app’s Nginx configuration so Dokku reads the selected file. A file committed in the repository does not alter an already-rendered server block until Dokku generates configuration again. Treat the setting and the template as a pair: documenting only the file path can leave a future operator wondering why a monorepo template was ignored.
2. Start from the release-matched Dokku template
Do not replace the generated file with a tiny standalone server block copied from an unrelated Nginx example. Dokku’s template contains the application proxy, upstream, SSL, logging, WebSocket, and other directives required by that release. Copy the template shipped with your installed version, then make the smallest possible change.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
The essential addition is an error mapping and a location for the replacement document. Conceptually, the relevant portion looks like this:
server {
# Retain the proxy, upstream, SSL, logging, and Dokku directives
# from the template matching the installed Dokku release.
error_page 404 /404.html;
location = /404.html {
root /home/dokku/APP/public;
internal;
}
}
This is a pattern, not a tested drop-in template. Adapt the surrounding server block, application document root, permissions, and file location to your deployment. If /404.html is inside the container rather than on the host, the location must be designed so Nginx can obtain it from that application layout; a host path that does not exist will produce another error instead of your page.
The exact-match form, location = /404.html, limits this handler to the replacement URI. Keep the surrounding locations from Dokku’s release-matched template, including the proxy and TLS behavior. Do not remove upstream definitions or rewrite rules merely to make the example shorter. A syntactically valid server block can still break WebSockets, HTTPS handling, logging, or application routing if those generated directives are lost.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems3. Create the replacement document
Place a file named 404.html in the directory represented by the location’s root, or change the mapping to the directory you actually use. A static page can contain your logo, navigation links, a search link, and a short explanation that the requested address does not exist. Keep it self-contained: missing CSS, JavaScript, fonts, or images can trigger additional requests that also fail and make troubleshooting harder.
Nginx must be able to traverse the directories and read the file. Check ownership and mode on the Dokku host when using a host-mounted path. When the file is supplied by the application image, verify that it is present in the built image at the expected path.
Use a deliberately simple first version while testing: plain HTML, a clear heading, and one working link. Once status and routing are correct, add branding and assets incrementally. This separates an Nginx path or permission problem from a front-end asset problem. Avoid embedding assumptions about a particular hostname if the same image or template is deployed to multiple environments.
4. Keep the location internal unless direct access is intentional
internal; allows the location to be reached through Nginx’s error handling but prevents an external client from requesting /404.html directly. This avoids exposing the implementation URL and makes the page an internal error target. Remove internal only when public direct access to that URI is an intentional part of your design.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
If a direct request to the replacement URI returns an expected denial while a nonexistent URL displays the page, that is normal for an internal location. Test both deliberately: the important check is the body and status for the original missing URL, not whether the implementation URI is browsable.
Host-managed method with nginx.conf.d
Dokku includes files matching /home/dokku/APP/nginx.conf.d/*.conf in the generated app server block. Create the file on the Dokku host, not in the application repository. A small include can contain the error_page mapping and its matching location, provided those directives are valid in the context where Dokku includes the file.
This method is useful when a platform team centrally controls branding or security policy. It is less repeatable for application developers: cloning the repository onto another Dokku host does not bring the include along, and an operator must copy or provision it separately. Keep a record of the host-side file and the Dokku release it was written for.
Host-managed files also require operational ownership during upgrades. Recheck the rendered configuration after a Dokku update, confirm that the include still appears in the server block, and retain a backup of the file. If the policy is intended to be part of the application contract rather than host policy, move it into the repository-managed sigil so a deployment cannot silently omit it.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchRank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Apply and inspect the generated configuration
Reload safely
After editing a host-side include, run:
dokku nginx:reload
Dokku validates the current Nginx configuration and, when it is valid, signals Nginx to reload without restarting the running process. If validation fails, Dokku exits without reloading, so an invalid edit does not replace the active configuration.
A successful command means the configuration passed validation and Nginx was signaled; it does not prove that the intended app block contains your rule or that the file is readable. Always pair the reload with configuration inspection and an actual request.
Inspect what Dokku rendered
Use the app-specific inspection commands before testing in a browser:
dokku nginx:show-config APP
dokku nginx:validate-config APP
nginx:show-config displays the generated configuration for the app. Confirm that it contains both error_page 404 /404.html; and the intended exact-match location. nginx:validate-config validates app configurations. It also supports --clean, which removes invalid app configurations; use that option deliberately rather than as a routine troubleshooting step.
Read the rendered file as Nginx will read it. Check that the rule is inside the expected server block, that braces are balanced, and that no later location or directive changes the same URI. If the mapping is absent, debugging the HTML file or permissions will not help—the template path, deployment mode, or include placement must be fixed first.
Verify that the response is really a custom 404
- Reload or redeploy after the template or include is in place.
- Request a deliberately nonexistent URL under the app’s hostname, such as
/this-path-should-not-exist. - Inspect both the response body and the HTTP status. The body should be your custom HTML and the status should remain
404. - Check that assets referenced by the page load from valid paths. A page that appears blank or partially styled may have a correct 404 mapping but broken asset URLs.
- Repeat the request after a normal deployment to ensure the configuration is regenerated with the app rather than being an accidental result of a temporary host edit.
The replacement mapping is not a redirect by itself. The browser should remain on the original nonexistent URL unless you explicitly configure a redirect-style error handling rule. A custom body with a 200 status is not a successful implementation: clients, crawlers, and monitoring systems need the 404 status to remain intact.
Test more than one missing path if your application has nested routing or language prefixes. Confirm that a missing URL with a query string still receives the intended body and status, and verify that the page itself does not reference a path that is handled by the application’s catch-all route. These checks expose accidental interactions between Nginx locations and application routers.
Troubleshoot the common failure modes
Dokku still shows its default 404 page
- Run
dokku nginx:show-config APP. If the mapping is absent, Dokku did not read the sigil or include. - For a Git deployment, confirm the file is at the repository root. For an image deployment, confirm it is in the image’s
WORKDIR. - For a monorepo, verify that
nginx-conf-sigil-pathpoints to the repository-relative file you committed. - If you used
nginx.conf.d, confirm the file exists under/home/dokku/APP/nginx.conf.d/on the host and that its directives are included in the rendered server block. - Reload after changing a host-side file. Editing a file without
dokku nginx:reloaddoes not change the active Nginx process.
Also check which hostname you are testing. A request sent to another app, a default virtual host, or a proxy in front of Dokku can legitimately return a different page. Test the app hostname that resolves to this Dokku server, then compare the response with the app-specific rendered configuration.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →The page returns 404, 403, or 500 instead of your HTML
- Confirm that the file exists at the exact path implied by
rootoralias. - Check directory traversal permissions and file readability for the Nginx worker.
- Ensure the location is not accidentally proxied back to the application, which can create an error loop or replace the intended body.
- Check whether the path is on the host or inside the container. A valid container path is not automatically a valid host path, and vice versa.
- Review the generated configuration for conflicting locations or a later directive that changes the same URI.
An error while serving the replacement can mask the original missing-resource response. Use the error log to distinguish “file not found,” permission denied, and an internal redirect loop. Fix the replacement location first, then retest the original nonexistent URL; changing the application’s route handling will not repair an unreadable Nginx file.
The app returns 502 instead of 404
A stopped or missing web process is the first thing to check. Dokku uses a minimal generated configuration that returns 502 until web processes are running. Start or deploy the web process, then inspect the generated configuration again. Do not debug the 404 file until the app is serving through its normal web process.
This condition is not evidence that the error_page directive is wrong. Dokku’s placeholder configuration is used for app availability problems, while the custom 404 flow applies after the app’s normal server block is active.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
The configuration will not reload
Run dokku nginx:validate-config APP and read the reported syntax or context error. Typical causes include copying a directive into the wrong Nginx context, omitting a closing brace, or replacing Dokku’s release-specific template with an incomplete server block. Restore the version-matched template, reapply only the error mapping, and run dokku nginx:reload again.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Do not use --clean automatically while investigating. That option removes invalid app configurations, which can make recovery harder if you have not saved the generated output and the intended template.
The status changes to 200
Inspect the error handling rule and any application middleware. The Nginx mapping should serve the replacement document while preserving the original 404 status. If the application itself catches unknown routes and emits a successful response, Nginx may never receive a 404 to handle; configure the application router to return 404 for missing resources, or make the application’s own fallback preserve that status.
Check the status at the edge that users actually reach. A reverse proxy, CDN, or application middleware in front of Dokku can rewrite bodies or statuses even when Dokku’s Nginx response is correct. Compare direct app-hostname results with the public endpoint when diagnosing that kind of discrepancy.
Read the relevant logs
When the rendered configuration looks correct but the response is unexpected, inspect the app’s Nginx logs:
dokku nginx:access-logs APP
dokku nginx:error-logs APP
The access log helps confirm the requested URI and status. The error log can reveal a missing file, permission problem, invalid include, or an internal redirect loop. Test with a deliberately nonexistent URL while watching the logs so you can associate the request with the resulting entries.
Look for two requests when using an internal replacement: the original missing URI and the internal request for the replacement document. The exact log format depends on the generated template, but the pair can show whether Nginx reached the error handler and where the second lookup failed. Stop log watching after the test or filter by the unique test path so unrelated traffic does not obscure the result.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Repository template or host include?
| Question | Choose nginx.conf.sigil |
Choose nginx.conf.d |
|---|---|---|
| Should the rule travel with the app? | Yes; it is committed and deployed with the app | No; it remains on the Dokku host |
| Who owns changes? | Application maintainers through source control | Host or platform operators |
| What is the scope? | One application’s generated server configuration | One application’s host-managed includes |
| How repeatable is a new host? | High, assuming the template matches the installed Dokku release | Requires separate provisioning or manual copying |
| What is the upgrade concern? | Recheck the override against template changes in each Dokku release | Recheck include context and generated output after upgrades |
Neither option is universally superior. Choose the repository template when the page is part of the application’s user experience and must move with releases. Choose the host include when operators intentionally enforce a host-level policy or need to change branding without modifying application code. Record the chosen ownership model so future deployments do not accidentally replace one method with the other.
Operational checklist
- Use a 404 document that is readable where Nginx serves it.
- Keep the original 404 status; do not turn missing pages into 200 responses.
- Keep the error location
internalunless direct requests are deliberately supported. - Preserve the complete Dokku template around your change.
- Inspect with
dokku nginx:show-config APPbefore guessing. - Validate and reload with Dokku’s commands after host-side edits.
- Check web-process health before diagnosing a 502.
- Use Nginx access and error logs when the generated configuration and observed response disagree.
- Retest after a redeploy and after a Dokku upgrade.
- Keep the page’s asset URLs valid or make the first version self-contained.
Frequently asked questions
Where exactly should error_page 404 go?
Place the mapping in the app’s generated Nginx server configuration through nginx.conf.sigil or a valid file in /home/dokku/APP/nginx.conf.d/. Preserve the release-matched Dokku template and verify the rendered server block with dokku nginx:show-config APP.
Recommended Free Tools
Can I edit Dokku’s shared error page for only one application?
The shared files under /var/lib/dokku/data/nginx-vhosts/dokku-errors are host-level defaults. Editing them affects the shared behavior rather than giving one app an isolated design. Use an app-level template or include for per-application branding.
Why does the custom file work on the host but not in the container?
Nginx can read only paths available in its own filesystem context. A file baked into the application image is not automatically available at an arbitrary host path, and a host file is not automatically mounted into the container. Match the location’s path to the deployment layout and confirm it in the rendered configuration.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Should visitors be able to open /404.html directly?
Usually no. Add internal; so Nginx can use the document for error handling while direct external requests are denied. Remove that restriction only when direct access is an intentional, documented part of the application.
Why does the page look correct but monitoring reports success?
Inspect the HTTP status, not only the HTML. A fallback route or middleware may return the custom body with 200, or an intermediary may rewrite the status. The desired result is your replacement body with status 404.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsDo I need to restart Dokku or the application?
For host-side Nginx changes, dokku nginx:reload validates and reloads Nginx without restarting the running process. A template change may also require redeploying or regenerating the app configuration so Dokku renders the updated file. Restart the application only when its own deployment or routing changes require it.
Conclusion
Dokku’s shared 404 page is intentional, but it is not the only option. An app-level nginx.conf.sigil gives you a portable, source-controlled override; a host-side nginx.conf.d include gives operators independent control. In either case, preserve Dokku’s release-specific server template, add error_page 404 /404.html;, serve a readable file from the correct location, reload safely, and verify that the custom body is delivered with an actual 404 status.
Frequently Asked Questions
How do I show a custom 404 page on Dokku?
Add an app-level Nginx override using nginx.conf.sigil or /home/dokku/APP/nginx.conf.d/, map error_page 404 /404.html;, and point the replacement location to a readable file.
Where does Dokku store its default error pages?
Dokku stores shared custom pages at /var/lib/dokku/data/nginx-vhosts/dokku-errors. Those defaults are shared, so app-specific branding requires an app-level override.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Why am I getting a 502 instead of my custom 404?
Dokku uses a minimal 502 configuration when the app is undeployed, has no web process type, or its web processes are stopped. Restore normal web-process health before troubleshooting the 404 rule.
How can I confirm Dokku loaded my Nginx override?
Run dokku nginx:show-config APP and look for both the error_page mapping and its replacement location. Then run dokku nginx:validate-config APP and reload if needed.
Should the custom 404 response keep status 404?
Yes. Verify the response status as well as the body. A custom page returned with 200 is not a correct missing-resource response and can mislead crawlers, clients, and monitoring systems.
Is nginx.conf.sigil better than nginx.conf.d?
Use nginx.conf.sigil when the rule should travel with the application in source control. Use nginx.conf.d when host or platform operators intentionally own the policy outside the repository.
The Bottom Line
For a portable Dokku setup, keep a release-matched nginx.conf.sigil with the app, add error_page 404 /404.html;, serve a readable replacement file from the correct host or container path, and verify the rendered configuration. Reload with Dokku’s Nginx command, preserve the 404 status, and use the Nginx logs if the body, status, or file lookup is unexpected.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

