Você deve usar try_files para isso. A ideia é que você crie seus URLs sem .html e o Nginx os adicionará silenciosamente. Exemplo de configuração abaixo.
server {
#listen/server_name/root here.
try_files $uri.html $uri $uri/ @notfound;
location @notfound {
alias /your/404/file.html
return 404;
}
}