Make nginx serve index.html if requested url is not found without using error_page

Mir Nazim asked:

I have nginx configured to serve a single page React.js app as static content. react-router handles routing in browser.

To make it possible for users to enter all urls (not just the domain, but also urls like,, etc.) directly in the address bar, I am doing,

error_page 404 /index.html

This works perfectly fine everywhere except in Internet Explorer. IE shows 404 page for this.

How do I configure nginx, such that it serves index.html, if the request path cannot be matched to a file in the root directory.


My answer:

This is a job for try_files.

try_files $uri /index.html;

$uri will load any static resources if they are present and accessible; for any inaccessible URLs, /index.html will be served (with a 200).

View the full question and any other answers on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.