Aqui está o problema:
if (!-f $request_filename){
rewrite ^/(.+)$ /index.php?$1& last;
}
Este é um dos erros de configuração mais comuns do nginx .
Substitua essas três linhas por try_files
:
try_files $uri $uri/ /index.php;
Veja também a entrada wiki do WordPress no nginx .
(BTW, seu .htaccess não faz nada, já que você não está usando o Apache.)