Unterabschnitte

Das nginx Paket

Einleitung

Dieses Paket stellt den Webserver nginx (Engine X) zur Verfügung. Dabei wird nginx nicht primär als wirklicher Webserver bereitgestellt, sondern nur die Funktionalitäten Load Balancer und Reverse Proxy können über die Eisfair-1 Konfigurationsschicht parametrisiert werden. Ein echter Webserver kann aber manuell über Erstellung der entsprechenden Konfigurationsdatei realisiert werden.

Die nginx Dokumentation ist unter http://nginx.org/ verfügbar.

Funktionen

Das nginx Paket bietet die Möglichkeit einen Load Balancer oder einen Reverse Proxy zu realisieren.

Voraussetzungen

Das Paket benötigt folgendes Paket: libpcre.
Es ist auch davon abhängig, dass eine aktuelle Version des Basissystems installiert ist.

Installation

Das nginx Paket wird über das Setup-Menü im Untermenü ”Package administration” installiert.

Das Menü im Setup-Program

Das nginx Menü ist über den Menüpunkt ”Service administration” des Hauptmenüs im zentralen Setup-Programm zu erreichen.
Es ist wie folgt aufgebaut:

  1.   View documentaion
  2.   View changes
  3.   View nginx logfiles
  4.   Edit configuration
  5.   Advanced configuration file handling
  6.   Start nginx
  7.   Stop nginx
  8.   Restart nginx
  9.   Reload nginx configuration
  10.   Show nginx status
  11.   Test nginx configuration
  12.   Edit nginx configuration directly
  13.   Check nginx module dependencies
  0.   Exit

Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt ”Edit Configuration” geändert werden. Standardmäßig wird dabei der Editor genutzt, der über den Menüpunkt ”Set eisfair configuration editor” in der ”Base configuration” eingestellt ist.

Nachdem der Editor beendet wurde wird die Konfiguration mit dem eischk-Programm automatisch auf syntaktische und teilweise auch auf semantische Fehler geprüft. Werden Fehler festgestellt, so werden diese gemeldet und der Benutzer zur Korrektur aufgefordert. Wird eine solche Korrektur nicht durchgeführt, so kann es zu unvorhersehbaren Fehlfunktionen bei dem Dienst kommen.

Es wird zusätzlich gefragt, ob die Konfiguration angewendet (aktiviert) werden soll. Wird dieses verneint, so unterbleibt die Aktivierung.

ACHTUNG
Beim nächsten Boot-Vorgang kann es in diesem Fall zu unvorhersehbaren Fehlern kommen.


Wird die Aktivierung bestätigt, werden über ein Skript die durchgeführten Änderungen wirksam gemacht. Dazu wird der nginx Dienst gestoppt und neu gestartet.

Die Konfigurationsdatei

Die Konfigurationsdatei (/etc/config.d/nginx) enthält in einer Reihe von Abschnitten die Parameter, die den Dienst parametrisieren bzw. festlegen, ob der Dienst überhaupt zur Verfügung gestellt wird oder nicht.

nginx web server (general settings)

START_NGINX

Legt fest, ob der nginx Server gestartet wird.

Gültige Werte: yes, no

Standardeinstellung: START_NGINX='no'

nginx web server (configuration action settings)

NGINX_MAN_CONFIG

Konfiguriere nginx manuell 'yes' oder 'no'. Wenn hier der Wert 'yes' gesetzt wird, so wird die nginx Konfigurationdatei /etc/nginx/nginx.conf nicht generiert. Der Anwender ist selbst dafür verantwortlich eine korrekte Konfiguration zu erstellen.

Gültige Werte: yes, no

Standardeinstellung: NGINX_MAN_CONFIG='no'

nginx web server (general configuration settings)

NGINX_SERVER_TYPE

Server Typ:
  reverse_proxy nginx arbeitet als Reverse Proxy  
  load_balancer nginx arbeitet als Load Balancer  

Eine Konfiguration für den Typ Web-Server wird möglichweise in der Zukunft möglich sein. Man muss NGINX_MAN_CONFIG='yes' benutzen, um einen Web-Server konfigurieren zu können. Will man saubere Ergebnisse erhalten, wenn eine Reihe von Hosts beim Load Balancing genutzt werden, so muss darauf geachtet werden, dass alle Hosts einen identischen Web-Inhalt (web content) haben.

Gültige Werte: reverse_proxy, load_balancer

Standardeinstellung: NGINX_SERVER_TYPE='reverse_proxy'

nginx web server (configuration settings)

NGINX_WORKER_PROCESSES

Definiert die Anzahl der sog. Worker Prozesse. Die optimale Anzahl wird bestimmt durch mehrere Faktoren. Die Anzahl der CPUs spielt eine Rolle, stellt aber nicht das Limit dar. Die Anzahl der genutzten Festplatten ist ebenfalls mit entscheidend. Die Anzahl der Worker Prozesse auf die Anzahl der verfügbaren CPUs zu setzen ist ein guter Startwert (der Wert 'auto' versucht die Anzahl eigenständig zu ermitteln).

Gültige Werte: Zahl oder 'auto'

Standardeinstellung: NGINX_WORKER_PROCESSES='auto'

NGINX_WORKER_CONNECTIONS

Dieser Parameter bestimmt die Anzahl gleichzeitiger Verbindungen, die ein Worker Prozess öffnen soll. Bitte beachten Sie, dass diese Zahl alle Verbindungen beinhaltet, also auch die Verbindungen mit anderen Servern (proxied server) nicht nur die Anzahl Verbindungen mit Clients. Eine wichtige Randbedingung ist, dass die Anzahl der gleichzeitigen Verbindungen die Anzahl der möglichen offenen Dateien nicht überschreiten darf (Siehe auch die Variable worker_rlimit_nofile. Diese wird aber derzeit nicht von der Eisfair-1 Konfigurationsschicht unterstützt.)

Gültige Werte: Zahl

Standardeinstellung: NGINX_WORKER_CONNECTIONS='1024'

NGINX_SERVER_LISTEN_N

Anzahl der zu erzeugenden listen directiven.

Gültige Werte: Zahl

Standardeinstellung: NGINX_SERVER_LISTEN_N='1'

NGINX_SERVER_LISTEN_x

Hier wird die Adresse und der IP-Port oder aber der UNIX-Domain Socket angegeben, auf dem der Server Anfragen entgegennimmt. Sowohl Adresse und Port oder nur eine Adresse können angegeben werden. Die Adresse kann auch ein Hostname sein.

Beispiele:
  127.0.0.1:8000    
  127.0.0.1    
  8000    
  *:8000    
  localhost:8000    

IPv6 Addressen können in eckigen Klammern angegegeben werden:
  [::]:8000    
  [::1]    

Ein UNIX-domain socket wird wie folgt angegeben:
  unix:/var/run/nginx_sock    

Standardeinstellung: NGINX_SERVER_LISTEN_='80'

NGINX_SERVER_NAME

Name eines virtuellen Servers. Bitte die angegebene nginx Dokumentation für weitere Informationen nutzen.

Standardeinstellung: NGINX_SERVER_NAME='localhost'

nginx web server (log configuration settings)

NGINX_ERROR_LOG

Name des Fehler-Logfiles und Loglevel. Ein relativer Dateiname wird als Dateiname relativ zu /var/log/nginx/. interpretiert.
Einen Syslog Server kann man über syslog:server=address konfigurieren.
Es ist NICHT möglich das Error Logging über NGINX_ERROR_LOG='off' auszuschalten.

Standardeinstellung: NGINX_ERROR_LOG='error.log'

NGINX_ACCESS_LOG

Name des Zugriffs-Logfiles und Format des Logs. Ein relativer Dateiname wird als Dateiname relativ zu /var/log/nginx/. interpretiert.
Einen Syslog Server kann man über syslog:server=address konfigurieren.

Über NGINX_ACCESS_LOG='off' kann das Logging ausgeschaltet werden.

Standardeinstellung: NGINX_ACCESS_LOG='access.log'

NGINX_LOGANON

Hier wird festgelegt, ob die IP-Adressen im Zugriffs-Logfile anonymisiert werden sollen.

Gültige Werte: yes, no

Standardeinstellung: NGINX_LOGANON='no'

NGINX_LOGANON_MODE

Diese Konfigrationsvariable wirkt nur auf IPv4 Adressen.
16Bit : erhalte 16 der 32 Bits
Beispiel 192.168.4.16 wird zu 192.168.0.0
24Bit : erhalte 24 der 32 Bits
Beispiel 192.168.4.16 wird zu 192.168.4.0

Gültige Werte: 16Bit, 24Bit

Standardeinstellung: NGINX_LOGANON_MODE='16Bit'

NGINX_ROTATE_LOGS

Definiert, ob die Funktionalität logrotate benutzt werden soll, um Error Log und Access Log rotieren zu lassen.
NGINX_ROTATE_LOGS sollte auf 'no' stehen, wenn NGINX_MAN_CONFIG='yes' genutzt wird.

Standardeinstellung: NGINX_ROTATE_LOGS='yes'

NGINX_LOGROTATE_INTERVAL

Definiert das logrotate Intervall. Intervall: daily, weekly, monthly

Standardeinstellung: NGINX_LOGROTATE_INTERVAL='daily'

nginx web server (status information settings)

NGINX_STUB_STATUS_LOAD

Soll das Stub Status Modul geladen werden 'yes' oder 'no'.

Das Stub Status Modul liefert auf einer Webseite Informationen über den nginx Server aus.

Standardeinstellung: NGINX_STUB_STATUS_LOAD='no'

NGINX_STUB_STATUS_LOCATION

Ort des Stub Status. Man kann den Status über
http://<servername oder serverip><NGINX_STUB_STATUS_LOCATION>
erreichen. Z.B. http://eisgcc.ap.de/basic_status

Standardeinstellung: NGINX_STUB_STATUS_LOCATION='/basic_status'

nginx reverse proxy (configuration settings)

NGINX_PROXY_BUFFERING

Freigeben oder Sperren der Nutzung von Puffern für Antworten der via Proxy angesprochenen Server.
Werte 'on' oder 'off'.

Standardeinstellung: NGINX_PROXY_BUFFERING='off'

NGINX_PROXY_PASS_URL

Setzt das Protokoll und die Adresse des/der via Proxy angesprochenen Server.

Standardeinstellung: NGINX_PROXY_PASS_URL='http://mydestination:80'

nginx load balancer (configuration settings)

NGINX_UPSTREAM_NAME

Name der sog. Upstream Definition. Hiermit wird einer Gruppe von Server, die als Ziele für das Load Balancing zur Verfügung stehen, benannt.

Standardeinstellung: NGINX_UPSTREAM_NAME='myupstream'

NGINX_LB_SERVER_N

Anzahl der Server in der Upstream Definition.

Standardeinstellung: NGINX_LB_SERVER_N='0'

NGINX_LB_SERVER_x_ADDRESS

Adresse des x-ten Servers.

Angabein wie bei NGINX_SERVER_LISTEN sind möglich.

NGINX_LB_SERVER_x_WEIGHT

”Gewicht” des x-ten Servers. Die Server, die als Ziele für das Load Balancing zur Verfügung stehen, werden in der sog. weighted round-robin balancing Methode angesprochen. Ein Gewicht ungleich 1 bedeutet, dass ein Server x-mal pro Durchgang angesprochen wird. Hiermit kann die Last ungleichmäßig verteilt werden.

Gültige Werte: Zahl

Standardeinstellung: NGINX_LB_SERVER_x_WEIGHT='1'

NGINX_LB_SERVER_x_MAX_FAILS

Maximale Anzahl Fehler des x-ten Servers.
Anwortet der x-te Server NGINX_LB_SERVER_x_MAX_FAILS nicht, so wird er als fehlerhaft markiert und NGINX_LB_SERVER_x_FAIL_TIMEOUT Sekunden nicht mehr benutzt.

Standardeinstellung: NGINX_LB_SERVER_x_MAX_FAILS='1'

NGINX_LB_SERVER_x_FAIL_TIMEOUT

Fehler Timeout des x-ten Servers in Sekunden. Siehe NGINX_LB_SERVER_x_MAX_FAILS.

Standardeinstellung: NGINX_LB_SERVER_x_FAIL_TIMEOUT='10'

NGINX_LB_SERVER_x_BACKUP

Soll der x-te Server als Backup Server genutzt werden 'yes' or 'no'. Ein Backup Server wird für das Load Balancing nur dann genutzt, wenn alle anderen Server der Server Gruppe nicht (mehr) antworten.

Standardeinstellung: NGINX_LB_SERVER_x_BACKUP='no'

Einstellungen beim Übersetzen der Packages

Mit folgenden Einstellungen wurde der nginx übersetzt (eigentlich konfiguriert):

        --prefix=
        --sbin-path=/sbin/nginx
        --conf-path=/etc/nginx/nginx.conf
        --error-log-path=/var/log/nginx/error.log
        --http-log-path=/var/log/nginx/access.log
        --pid-path=/var/run/nginx.pid
        --lock-path=/var/run/nginx.lock
        --http-client-body-temp-path=/var/lib/nginx/tmp/
        --http-proxy-temp-path=/var/lib/nginx/proxy/
        --http-fastcgi-temp-path=/var/lib/nginx/fastcgi/
        --http-uwsgi-temp-path=/var/lib/nginx/uwsgi/
        --http-scgi-temp-path=/var/lib/nginx/scgi/
        --user=nginx
        --group=nginx
        --modules-path=/var/lib/nginx/modules
        --with-pcre-jit
        --with-http_realip_module
        --with-http_addition_module
        --with-http_xslt_module=dynamic
        --with-http_image_filter_module=dynamic
        --with-http_geoip_module=dynamic
        --with-http_perl_module=dynamic
        --with-http_sub_module
        --with-http_dav_module
        --with-http_flv_module
        --with-http_mp4_module
        --with-http_gzip_static_module
        --with-http_random_index_module
        --with-http_secure_link_module
        --with-http_degradation_module
        --with-file-aio
        --with-http_ssl_module
        --with-http_stub_status_module
        --with-mail=dynamic
        --with-mail_ssl_module
        --with-http_v2_module
        --with-stream=dynamic
        --with-http_auth_request_module
        --with-debug

Erster Test nach Installation von nginx

Ein erster lokaler Test von nginx kann durch die Nutzung als reiner Webserver erfolgen. Hier sind dann keine weiteren Server erforderlich.

Vorgehensweise:
1.) cd /etc/nginx
2.) cp nginx.conf.default nginx.conf
3.) Konfiguration ändern
START_NGINX='yes'
NGINX_MAN_CONFIG='yes'

4.) Im Browser
http://<name des eisservers> oder
http://<ip des eisservers>

Die sog. Welcome Seite von nginx wird angezeigt:
Welcome to nginx!