dlaczego proces nginx działa z użytkownikiem nikt

16

Próbowałem skonfigurować nginx, aby działał z jedną z moich aplikacji railsowych, kiedy spojrzałem na dane wyjściowe ps -e | grep nginx, zdałem sobie sprawę, że procesy robocze nginx działają z użytkownikiem nikt.

Czy istnieje powód, dla którego nie działają jako dane www?

mu 無
źródło
1
Wydaje się rozsądnym pytaniem, które doprowadziło do wyczerpującej odpowiedzi - dlaczego pytający miał rację?
notapatch

Odpowiedzi:

25

Czy istnieje powód, dla którego nie działają jako dane www?

Tak. Najprawdopodobniej nie określiłeś użytkownika w konfiguracji nginx .

Dyrektywa użytkownika: http://nginx.org/en/docs/ngx_core_module.html#user

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

Jak uruchomić Nginx jako konkretny użytkownik?

Możesz określić użytkownika / grupę, z której działa nginx, w konfiguracji nginx.

Oto przykład, jak mogłaby wyglądać konfiguracja nginx (zwróć uwagę na dyrektywę użytkownika):

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
}

Po prostu zaktualizuj konfigurację, a następnie załaduj ponownie lub uruchom ponownie nginx i powinieneś być gotowy.

Oczywiście powinieneś wybrać użytkownika, który działa najlepiej dla twojego systemu, w Debian / Ubuntu domyślnie są dane www, więc jest to rozsądny wybór.

Drew Khoury
źródło
Według mnie www-data jest raczej właścicielem / grupą / var / www i nie jest dobrym pomysłem używanie tego samego użytkownika do procesu nginx ( stackoverflow.com/questions/22336186/... ) Nowa instalacja nginx przez apt na debianie używa użytkownika nginx. Może chcesz zmienić przykład na używanie użytkownika nginx.
binaryanomalia
4

Proces główny jest uruchamiany jako root, a następnie nginx będzie setuid()/ setgid()do USER/ GROUP. Jeśli GROUPnie jest określony, nginx używa tej samej nazwy co USER.

Domyślnie jest to nobodyużytkownik i nobodygrupa lub lub nogroup --user=USERi --group=GROUPze ./configureskryptu.

Możesz edytować nginx.conf i set user to www www;

ankso
źródło