I want to use nginx as a reverse proxy for Google App Engine application to support naked domain as described here. If I use this scheme, will all the traffic go through the server that hosts nginx or client will connect to App Engine directly? Can it be a bottleneck for performance and availability?
Using that method, all your traffic would run through the NGINX server so that would be a bottleneck, and you'd have to make sure it had enough capacity to work well. It would also cause some latency (Approximately 2x latency on every request, because your client would have the latency connecting to NGINX then NGINX would have the latency of connecting to AppEngine)
There is no need for setting up reverse-proxy for both Flexible and As well as Standard Environment.
App Engine instances in the Standard environment 1 do not have public static IP addresses, and are completely protected by the main Google Front-end server. Requests to your application first hit the Google Front-end, then the front-end performs the SSL security checks according to your uploaded certificate , and then forwards the request to your App Engine instances using their internal IPs. Therefore no reverse-proxy is required.
If you are using the App Engine Flexible environment , you are able to have static IPs for your instances as they use Compute Engine VMs . But, App Engine automatically loads Nginx proxy in front of every App Engine Flexible instance pre-configured, so you do not have to set this up at all. All you have to do is follow the guide to uploading your SSL cert , and requests will be vetted by the Google Front-end just like the Standard environment above. Therefore no added reverse-proxy is required.
Full answer can be found here issue