Fortytools-Blog mit News für Handwerker und Dienstleister

Hier finden Sie aktuelle Informationen, Tipps und Tricks rund um Büro, Verwaltung, Einsatzplanung und mehr!

Getting serious with nginx and passenger

As we are safety-conscious devops we don’t want our webservers to run as root.

Today we’re hosting a pretty standard rails/mysql app. As server we use our trusty nginx. To make it not too easy we combine it with passenger!

Too really get serious, we want to fire all this up with a upstart script.

Get the party started

To bring the startup into the form of a proper startup script, we wrote something pretty similar to this:

But it will run as root this way - A little further down the road, one might consider setuid www. But behold - It’s a trap!

Seemingly the correct way seems to be to use the user directive, like

user www # in the nginx.conf

to actually tell nginx under which user to run. The nginx master process will actually run as root, but the child processes handling the request will run as the unprivileged www user.
This has the additional benifit, that we can bind ports lower than 1024!

root      3908  0.0  0.0 654708  1180 ?        Ss   19:10   0:00 nginx: master process /opt/nginx/sbin/nginx
www       3909  0.0  0.1 655240  2648 ?        S    19:10   0:00 nginx: worker process
www       3910  0.0  0.0 654856  1696 ?        S    19:10   0:00 nginx: cache manager process

Being patient with the passenger

The goal is in reach, but the passenger is not ready to board yet. Instead it gives us the error page, telling it’s missing the HOME environment variable.

Passenger just wants a litte attention for himself. In the nginx.conf we have to add the following lines:

passenger_default_user www;
passenger_default_group www;

So actually it’s just these three lines you need to get all up an running - and if you do not take all the detours trying to find out how to run services in general via upstart - it should be set up rather quickly.

Über den Autor

Bewertet mit durchschnittlich
3.9
Sternen von
14
Lesern.

Fortytools für Ihre Branche

No items found.

Testen Sie 30 Tage kostenlos und unverbindlich! Fortytools ist die smarte Software für Dienstleister und Handwerker.

Sie können Fortytools 30 Tage kostenlos und unverbindlich testen. Dabei stehen Ihnen alle Funktionen uneingeschränkt zur Verfügung.
Heute kostenlos testen!
Nutzerbewertung: 4,8 von 5 Sternen

Fortytools läuft komplett im Internet-Browser: Keine Software-Installation, keine Probleme mit Updates. Einfach Einloggen und fertig. Von jedem internetfähigen Gerät.

Kostenlos und unverbindlich
Professionelle Rechnungen schreiben
Kunden-Daten verwalten
Mitarbeiter-Daten verwalten
Aufgaben- und Terminplanung
Professionelle Angebote schreiben
Einsätze planen und Zeiten erfassen