IT-Knowledgebase
de Software Webserver nginx

NGINX als Webserver für statische Inhalte

Da NGINX ein Webserver ist, ist es natürlich relativ einfach damit eine Webseite auszuliefern. Hierzu gibt man den Port in der Config an und das Verzeichnis aus dem heraus das ganze serviert wird.

Alles zum Anfang

Wenn wir uns den NGINX Webserver installiert haben (unter Ubuntu z.B. apt install nginx) und zu unserem Konfigurationsordner navigieren sieht es erstmal wie folgt aus:

 1➜ ls -la
 2total 68
 3drwxr-xr-x  10 root root  4096 Oct  8 11:16 .
 4drwxr-xr-x 148 root root 12288 Nov 11 20:29 ..
 5drwxr-xr-x   2 root root  4096 Oct  8 11:16 conf.d
 6drwxr-xr-x   2 root root  4096 Oct  8 11:16 conf.mail.d
 7drwxr-xr-x   2 root root  4096 Oct  8 11:16 conf.stream.d
 8-rw-r--r--   1 root root  1007 Aug 12 16:28 fastcgi_params
 9-rw-r--r--   1 root root  2676 Oct  8 11:16 mime.types
10lrwxrwxrwx   1 root root    22 Aug 14 07:20 modules -> /usr/lib/nginx/modules
11-rw-r--r--   1 root root  2296 Oct  8 11:16 nginx.conf
12-rw-r--r--   1 root root   636 Aug 12 16:28 scgi_params
13drwxr-xr-x   2 root root  4096 Oct  8 11:16 sites-available
14drwxr-xr-x   2 root root  4096 Oct  8 11:16 sites-enabled
15drwxr-xr-x   2 root root  4096 Oct  8 11:16 snippets
16drwxr-xr-x   2 root root  4096 Oct  8 11:16 streams-available
17drwxr-xr-x   2 root root  4096 Oct  8 11:16 streams-enabled
18-rw-r--r--   1 root root   664 Aug 12 16:28 uwsgi_params

der Konfigurationsordner von einem NGINX

Wichtig hierbei ist für uns jetzt allerdings nur die folgenden Dateien bzw. Ordner

  • nginx.conf
    • Beinhaltet die ganze Konfiguration vom NGINX. Von hier aus werden auch die anderen Dateien geladen
  • conf.d
    • bietet Platz für weitere Konfigurationen
  • sites-available
    • Sind alle vorhandenen Seiten (Konfiguration fürs WEB)
  • sites-enabled
    • Sind alle aktiven Seiten

Innerhalb unserer nginx.conf sehen wir nun, dass einfach die Dateien aus den anderen Verzeichnissen eingebunden werden

1include /etc/nginx/conf.d/*.conf;
2include /etc/nginx/sites-enabled/*;

Einbinden von weiteren Konfigurationen am Ende der nginx.conf

Eine neue Konfiguration für den Endpunkt

Wir legen eine Datei in unter /etc/nginx/conf.d/ mit einem Namen den wir uns selbst aussuchen an. Die Endung dieser Datei muss aber mit .conf enden.

Innerhalb dieser Datei schreiben wir nun folgendes

server {
}

innerhalb des Server Blocks liegt die Konfiguration von Servern

Hier gibt es n un verschiedene Parameter die man angeben kann um die Konfiguration aufzubauen. Wichtig hierbei ist allerdings der listen Parameter und der server_name. listen gibt den Port an auf welchem die Konfiguration hört und server_name ist tatsächlich der Name. Beim Namen sind natürlich auch wildcards, regex oder localhost in Ordnung. Danach können noch für die verschiedenen URL´s andere Regeln oder Verzeichnisse definiert werden.

Wir wollen aber mal zurück und wollen, dass unsere Seite für uns erreichbar ist auf Port 80 (http). Da es für uns ist, nehmen wir den Namen localhost. Das Verzeichnis auf dem unsere Webseite liegt ist /var/www/html/meineWebseite.

server {
    listen       80;
    server_name  localhost;


    location / {
        root   /var/www/html/meineWebseite;
        index  index.html index.htm;
    }

}

Die location gibt an, welche URL gematched wird. So kann man z.B. bei PHP oder Bildern andere Server oder Verzeichnisse ansprechen als die eigentliche Webseite. Der index ist nun der Einstiegspunkt von uns und ist meistens bei einer Webseite die index.html (oder auch index.htm). Der root Parameter setzt dabei das Verzeichnis wo unsere Webseite liegt.

Nachdem man die Konfiguration geändert hat, startet man den Dienst einmal neu

1sudo service nginx restart

Nun kann über die IP-Adresse (localhost oder 127.0.0.1) auf den Server zugegriffen werden und die Webseite wird angezeigt.