Adding multiple servers to an upstream block allows load balancing across multiple servers, but typically where the servers are located at the same location.
When a user accesses your website, they look up the IP address of the domain name of your website. An IP address corresponds to a single location on the internet, so necessarily, the gateway server is located in a single location. That means that if the servers are not located in the same location, it will actually be counterproductive, since all website data transfers will go through the gateway server, which is running nginx.
To load balance geographically, you need multiple domains or sub-domains. Each domain/subdomain corresponds to a geographic region (although one geographic region can have multiple domains). You update the A records of the domain/subdomains to point to the correct server, and configure them normally.
Lastly, you can setup a redirection based on the IP address to the appropriate subdomain to get the closest server.
Note that if you are doing it by country, it will get a reasonable close, but not necessarily the closest server.
You will probably be running nginx on each server, with configuration differing based on the IP address blocks it handles.
Users will be able to see that they have been redirected to a different site (domain/subdomain) to handle their request. This is what google.com does, depending on where you access it, it will redirect to a country-specific TLD.
Note this is not a simple configuration. If you want a failsafe in case a server falls, you will have to have multiple servers in each location. You will also have many servers with slightly different configurations which you will have to manage. It may also not necessarily be easiest to setup geographic redirection in nginx, but you can do the redirection in the application server instead.