ApplikationMitNginx

Aus Vokabulabor
Zur Navigation springen Zur Suche springen

Links

Zielsetzung

Dieses Tutorial dient dazu, die lokale Web-Applikation Notes (genauer eine Laravel-Applikation) für den NGINX-Webserver zu konfigurieren.

Laravel-spezifisch ist das DocumentRoot-Verzeichnis DOMAIN/public.

Kenndaten

  • Domäne: notes.test (lokal)
    • Hinweis: Um die Domäne ohne Probleme im Firefox mit http statt https aufrufen zu können, muss die Domäne mit .test enden.
  • Verzeichnis mit dem PHP-Quelltext der Applikation: /home/ws/php/notes

Einrichten der Domäne (lokal)

Eintrag in die Datei /etc/hosts:

127.0.0.2      notes.test
  • Hinweis; statt 127.0.0.2 kann auch statt 2 jede andere Zahl zwischen 1 und 255 genommen werden, z.B. 127.0.0.137

Einrichten der NGINX-Konfiguration

DOMAIN=notes.test
ROOT_DIR=/home/ws/php/notes
PHP_VERS=8.2
cd /etc/nginx/sites-available
cat >$DOMAIN <<EOS
server {
    listen 80;
    listen [::]:80;
    server_name $DOMAIN;
    root $ROOT_DIR/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
        try_files \$uri \$uri/ /index.php?\$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php\$ {
        fastcgi_pass unix:/var/run/php/php$PHP_VERS-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
        deny all;
    }
}
EOS
cd /etc/nginx/sites-enabled
ln -s ../sites-available/$DOMAIN .
systemctl reload nginx

Erklärungen

  • Für jede Applikation wird im Verzeichnis /etc/nginx/sites-available eine Konfigurationsdatei angelegt, die den Namen der Domäne hat.
  • Im Verzeichnis /etc/nginx/sites-enabled wird ein symbolischer Link auf diese Konfigurationsdatei angelegt.
  • Mit systemctl reload nginx wird die Konfiguration von NGINX eingelesen, ab da steht die Seite zur Verfügung.