NGINX

NGINX ist ein freier Webserver der im Jahr 1999 von Igor Sysoev entwickelt wurde und ist aktuell die Nummer 2 der meist verwendetesten Webserver (Stand Mai 2019 – siehe „Was ist ein Webserver„).

Warum wurde noch ein Webserver entwickelt wenn es eh schon Apache gab?

NGINX ist primär aus dem sogenannten „C10k Problem“ entstanden.

Beim „C10k Problem“ geht es um die Optimierung der Handhabung von Network-Sockets um eine große Anzahl an Clients zu verabeiten.

C => Connection | 10k => 10.000

Hier hat NGINX mit seiner Event getriebenen, asynchronen Architektur die Basis für weitere zukünftigen „High-Performance“ Server-Software gelegt und wurde zum schnellsten verfügbaren Webserver.

Installation und Konfiguration

Das installieren vom NGINX Webserver ist bei jedem Betriebssystem etwas anders. An den folgenden Beispielen wird immer von Debian/Ubuntu ausgegangen.

sudo apt-get install nginx

Danach sollte folgender Befehl die aktuell installierte NGINX Version ausgeben:

nginx -v

Wie sonst bei allen anderen Software-Packages üblich befinden sich die Config-Dateien in /etc/nginx.

In diesem befinden sich folgende Dateien und Ordner

  • conf.d/
    • Hier können Konfigruationsdateien abgelegt werden
  • fastcgi.conf & fastcgi_params
    • Setzt Standardparameter für FastCGI Aufrufe.
  • mime.types
    • Mapping für Dateiendungen zu MIME-Types
  • modules-available/
    • Enthält Konfigurationsdateien von verfügbaren NGINX-Modulen
  • modules-enabled/
    • Enthält Symlinks zu den Konfigurationsdateien (in modules-available), welche aktiviert werden sollen
  • nginx.conf
    • Basis NGINX-Config File, welche für alle vHosts geladen wird
    • In dieser werden alle aktivierten Module, Konfigurationen und vHosts geladen
  • proxy_params
    • Hier sind ein paar standard Proxy-Parameter vorhanden.
  • scgi_params
    • Setzt standard SCGI-Parameter vorhanden
  • sites-available/
    • Beinhaltet Konfigurationen für die jeweiligen vHosts
  • sites-enabled/
    • Beinhaltet Symlinks zu den vHosts-Konfigurationsdateien (in sites-available), welche aktiviert werden sollen
  • snippets/
    • Beinhaltet Snippets für den Aufruf von PHP Dateien über FastCGI und für die Implementierung von selbst erstellten HTTPS Zertifikaten

Unwichtigere Dateien

  • uwsgi_params
  • koi-utf
    • Mapping für „KOI8-R“ (Kyrillisch) zu „UTF-8“ Characters
  • koi-win
    • Mapping für „KOI8-R“ (Kyrillisch) zu „Windows-1251“ Characters
  • win-utf
    • Mapping für „Windows-1251“ zu „UTF-8“ Characters

Neuen vHost erstellen

In /etc/nginx/sites-available befindet sich eine Datei „default“.

Diese baut sich wie folgt auf (unwichtige Kommentare (#) wurden entfernt)

server {
	listen 80 default_server; # IPv4 listen on Port 80
	listen [::]:80 default_server; # IPv6 listen on Port 80

	root /var/www/html; # Absolute path to Document-Root

	# Set default files to show when accessing the website
	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	server_name mydomain.at; # the domain name

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}

	# pass PHP scripts to FastCGI server
	#
	#location ~ \.php$ {
	#	include snippets/fastcgi-php.conf;
	#
	#	# With php-fpm (or other unix sockets):
	#	fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
	#	fastcgi_pass 127.0.0.1:9000;
	#}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	#location ~ /\.ht {
	#	deny all;
	#}
}

Wenn diese Konfiguration aktiviert werden soll muss ein „Symlink“ in den Ordner /etc/nginx/sites-enabled erstellt werden.

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Bzw. wenn eine schon aktivierte Config deaktiviert werden soll:

unlink /etc/nginx/sites-enabled/default

Bevor man aber nun den NGINX Service neu startet sollte man checken, ob die neue Configuration auch valide ist:

nginx -t

Nach einer Änderungen der Config im NGINX muss immer der Service neu gestartet bzw. neu geladen werden.

systemctl reload nginx

Source: https://www.nginx.com/resources/glossary/nginx/

Share this post

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.