В первом случае не нужно делать try_files $uri
Надо try_files /index.html
То есть конфиг должен выглядеть так:
server {
root /var/www/php/public; # Здесь находится index.php
index index.php index.html index.htm index.nginx-debian.html;
server_name localhost;
location = / { # Здесь хочу отдать index.html
root /var/www/static; # здесь физически находится index.html
try_files /index.html =404;
}
location / { # Здесь хочу обрабатывать остальные запросы, как обычно
try_files $uri $uri/ /index.php?$query_string;
}
}