 <p><em>I've moved the most important points from the comments.</em></p> <ol> <li><p>Yep, that's the normal behavior. Nginx's master process needs root privileges to manage listening sockets on the machine. <a href="http://forum.nginx.org/read.php?2,159000,159015#msg-159015" rel="nofollow">This</a> forum thread states that you <strong>can</strong> change it, but it may cause problems. However, Nginx does allow to change the owner of the worker processes.</p></li> <li><p>It depends on how the uWSGI was installed. If uWSGI was installed via <code>apt-get</code> you can start (stop, restart) it like this:</p> <p><code>service uwsgi &lt;action&gt;</code></p> <p>You installed uWSGI via <code>pip</code>, so the <a href="https://uwsgi-docs.readthedocs.org/en/latest/Options.html#daemonize" rel="nofollow">daemonize</a> option will do the trick:</p> <p><code>/path/to/uwsgi --daemonize /path/to/logfile</code></p> <p>You can start it under any user you want, BUT if you decide to run it under root, you should specify the <a href="https://uwsgi-docs.readthedocs.org/en/latest/Options.html#gid" rel="nofollow">gid</a> and <a href="https://uwsgi-docs.readthedocs.org/en/latest/Options.html#uid" rel="nofollow">uid</a> options. uWSGI's <a href="https://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html" rel="nofollow">best practices page</a> says:</p> <blockquote> <p>Common sense: do not run uWSGI instances as root. You can start your uWSGIs as root, but be sure to drop privileges with the uid and gid options.</p> </blockquote> <p>Also take a look at <a href="https://uwsgi-docs.readthedocs.org/en/latest/Options.html?highlight=uid#master-as-root" rel="nofollow">master-as-root</a> option.</p></li> <li><p>You can create as many processes and threads as you want, but it should depend on how many requests you're trying to process (concurrent or per second). You can read about this <a href="https://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html" rel="nofollow">here</a>. I would try different configurations and choose which one works better.</p> <p>3b. Basically, <code>worker_processes</code> helps to handle concurrent requests. See <a href="http://stackoverflow.com/questions/7325211/tuning-nginx-worker-process-to-obtain-100k-hits-per-min">this</a> question.</p></li> <li><p><em>*WARNING: you are running uWSGI without its master process manager*</em></p> <p>You didn't specify a <code>master</code> option in your .ini file. While master process is certainly unnecessary, it is very useful. It helps to effectively control workers and respawn them when they die.</p></li> </ol>