nginx - specify different index file name for subdirectory

To have bar.html as index file use:

location /foo {
    index bar.html;
}

If you wish any request to /foo/anything end up in /foo/bar.html use this:

location = /foo {
    try_files /foo/bar.html =404;
}

location /foo/ {
    try_files /foo/bar.html =404;
}

In your location you have the wrong root directive.

In your config nginx end up looking for the file /usr/share/nginx/mysite/public/foo/foo/bar.html