Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I was trying to setup nginx to run with one of my rails apps, when having a look at output for ps -e | grep nginx , I realised nginx worker processes run with user nobody.

Is there a reason why they are not running as www-data ?

share|improve this question
1  
Seems a reasonable question which led to an informative answer - why was the questioner dinged a point? –  Richard Mar 7 at 10:45

2 Answers 2

up vote 10 down vote accepted

Is there a reason why they are not running as www-data ?

Yes. You most likely haven't specified the user in your nginx config.

User Directive: http://nginx.org/en/docs/ngx_core_module.html#user

syntax: user user [group];
default:    
user nobody nobody;
context:    main

How to run nginx as a particular user?

You can specify the user/group that nginx runs as, in the nginx config.

This is an example of what an nginx config might look like (notice the user directive):

pid                 /path/to/nginx.pid;
user                www-data www-data;
worker_processes    1;

events {
   worker_connections  1024; # usually 1024 is a good default
}

http {
   # more code goes here
}

Simply update your config and then reload or restart nginx and you should be good to go.

Of course you should choose the user that works best for your system, in Debian/Ubuntu there's a www-data by default, so that's a sensible choice.

share|improve this answer
    
www-data is to my understanding rather the owner/group of /var/www and it's not a good idea to use the same user for the nginx process (stackoverflow.com/questions/22336186/…) A fresh installation of nginx via apt on debian uses the user nginx. Maybe you'd want to change the example to using the nginx user. –  binaryanomaly Dec 20 at 17:37

The master process is run as root, then nginx will setuid()/setgid() to USER/GROUP. If GROUP is not specified, then nginx uses the same name as USER.

By default it's nobody user and nobody or nogroup group or the --user=USER and --group=GROUP from the ./configure script.

You can edit nginx.conf and set user to www www;

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.