Raspberry Pi nginx installieren

Nginx auf Raspberry Pi installieren & einrichten

Mit Nginx laufen Webanwendungen auf eurem Raspberry Pi endlich schnell! In diesem Tutorial/Howto gehe ich auf Installation und Einrichtung dieses Webservers ein. Natürlich funktioniert auch Pi Control damit. Was nginx ist, erfährst du in diesem Beitrag.

Installation von nginx

Zum Installieren musst du folgenden Befehl mit dem Paket nginx eingeben:

sudo apt-get install nginx

Danach kann auch schon nginx gestartet werden.

/etc/init.d/nginx start

Das Stammverzeichnis für eure Dateien ist /var/www/html. Hast du noch kein PHP für deinen Webserver installiert haben, einfach diesen Befehl ausführen:

sudo apt-get install php5-fpm php5-mysql php5-curl php5-gd php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-sqlite

Einrichtung von nginx

Die virtuall Hosts liegen in /etc/nginx/sites-available/default. Am Einfachsten ist es, ihr passt die Datei folgendermaßen an:

server {
 listen 80;                            ## Listen für IPv4;
 listen [::]:80 ipv6only=on;           ## Listen für IPv6;
 server_name _;
 root /var/www/html;                   ## Euer Webserver-Root-Ordner
 index index.php index.html index.htm; ## Festlegung der Index-Dateien

 location / {
   try_files $uri $uri/ =404;
 }

 #error_page 404 /404.html;            ## 404 Fehlerseite
 # Alle 50x Fehlerseiten auf Standardfile /50x.html weiterleiten
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
    root /var/www/html;
 }

 # PHP Skripte zu FastCGI an 127.0.0.1:9000 leiten
 location ~ \.php$ {
   fastcgi_pass unix:/var/run/php5-fpm.sock;
   fastcgi_index index.php;
   include snippets/fastcgi-php.conf;
 }

 # Verbiete Zugriff auf .htaccess Files. Macht Sinn, als ihr den root Ordner auf euren Apache Pfad gelegt habt.
 location ~ /\.ht {
   deny all;
 }

 # Zur Sicherheit aufgrund einer Nginx Sicherheitslücke, siehe: http://goo.gl/0uK8xG
 if ($request_uri ~ " ") {
   return 444;
 }
}

Die ersten beiden listen Zeilen weißen Nginx an, auf Port 80 sowohl IPv4 als auch IPv6 Adressen anzunehmen. Hier könnt ihr natürlich auch 8080 oder jeden anderen, freien Port verwenden.

server_name _; bewirkt, dass dies ein Catchall vhost (jeder beliebige vhost wird angenommen) ist. Hier kann natürlich auch jeder andere Hostname eingetragen werden, z. B. für foo.de:

server_name    foo.de;

Die Zeile index gibt an, dass in diesem root-Pfad, die index.php, index.html oder index.htm in als Index-Datei erkannt und verwendet werden, sofern vorhanden.

Für php wichtig ist der Teil location ~ \.php$ { … }. So kann auch php einwandfrei verwendet werden, wie ihr es von Apache gewohnt seid.

Zum Abschluss muss nurnoch Nginx neugeladen werden und wenn Apache2 läuft, dieser gestoppt werden.

/etc/init.d/nginx reload
service apache2 stop

Denk dran, dass die Dateien nun in /usr/share/nginx/www gehören um von der URL/IP deines Raspberry Pi’s aufgerufen zu werden! 🙂

Welcome to nginx
Zur Sicherheit könnt ihr auf den Fehlerseiten auch die nginx-Version ausblenden, so weiß ein möglicher Angreifer nicht, welche Version du hast, um Schwachstellen dieses Releases auszunutzen. Dazu …

vi /etc/nginx/nginx.conf

eingeben und

server_tokens off;

auskommentieren.

4 Gedanken zu „Nginx auf Raspberry Pi installieren & einrichten“

  1. Hallo,

    musste die Zeile „fastcgi_index index.php;“ aus der default config entfernen weil die schon in snippets/fastcgi-php.conf drin ist und sonst ein Fehler beim Start kommt.

    Sonst lief alles prima nach Plan 🙂

    Gruß,
    Thomas

  2. Lauft leider nicht bei mir bekomm nur Fehler

    nginx.service – A high performance web server and a reverse proxy server
    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enable d)
    Active: failed (Result: exit-code) since Sun 2021-03-14 21:32:20 CET; 49ms ago
    Docs: man:nginx(8)
    Process: 6965 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 6966 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exi ted, status=1/FAILURE)

    Mär 14 21:32:18 RaspberryPi nginx[6966]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Mär 14 21:32:18 RaspberryPi nginx[6966]: nginx: [emerg] bind() to [::]:80 failed (98 : Address already in use)
    Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to [::]:80 failed (98 : Address already in use)
    Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to [::]:80 failed (98 : Address already in use)
    Mär 14 21:32:20 RaspberryPi nginx[6966]: nginx: [emerg] still could not bind()
    Mär 14 21:32:20 RaspberryPi systemd[1]: nginx.service: Control process exited, code= exited, status=1/FAILURE
    Mär 14 21:32:20 RaspberryPi systemd[1]: nginx.service: Failed with result ‚exit-code ‚.
    Mär 14 21:32:20 RaspberryPi systemd[1]: Failed to start A high performance web serve r and a reverse proxy server.
    dpkg: Fehler beim Bearbeiten des Paketes nginx-full (–configure):
    »installiertes nginx-full-Skript des Paketes post-installation«-Unterprozess gab de n Fehlerwert 1 zurück
    dpkg: Abhängigkeitsprobleme verhindern Konfiguration von nginx:
    nginx hängt ab von nginx-full (<< 1.14.2-2+deb10u3.1~) | nginx-light (<< 1.14.2-2+d eb10u3.1~) | nginx-extras (<= 1.14.2-2+deb10u3) | nginx-light (>= 1.14.2-2+deb1 0u3) | nginx-extras (>= 1.14.2-2+deb10u3); aber:
    Paket nginx-full ist noch nicht konfiguriert.
    Paket nginx-light ist nicht installiert.
    Paket nginx-extras ist nicht installiert.

    dpkg: Fehler beim Bearbeiten des Paketes nginx (–configure):
    Abhängigkeitsprobleme – verbleibt unkonfiguriert
    Trigger für systemd (241-7~deb10u6+rpi1) werden verarbeitet …
    Trigger für man-db (2.8.5-2) werden verarbeitet …
    Trigger für libc-bin (2.28-10+rpi1) werden verarbeitet …
    Fehler traten auf beim Bearbeiten von:
    nginx-full
    nginx
    E: Sub-process /usr/bin/dpkg returned an error code (1)

Schreibe einen Kommentar

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