С какой целью у вас в try_Files указан /index.html?
try_files $uri /index.html;
Пробует найти $uri и если не находит перебрасывает на /index.html.
Это синтаксис try_Files:
try_files file ... uri;
Последний аргумент - это URL или named location в случае, если ни один из предыдущих путей не был найден.
В вашем случае, должно быть тогда:
try_files $uri /404.html
Насколько я понимаю начиная с какой-то версии nginx поддерживает следующий синтаксис:
try_files $uri =404
Тогда в случае если ни один из аргументов не был найден генерируется HTTP код 404 и далее обработка идет по соотвествующей error_page.