Positioning of nginx

We can deploy a web system like below:

  1. HAProxy <---->[optinal Varnish] <----->nginx+uWSGI(communicate
    locally)
  2. nginx <------> uWSGI(or cluster)

as nginx can ‘cache’ and ‘proxy’, the positioning of nginx is confusing
me.

my questions are:
1, is it wrong to that nginx talks to uWSGI locally?
2, is it proper of using nginx to take over haproxy+varnish?

thx