Verwendung des OpenResty Web Framework für Nginx unter Ubuntu 16.04

Einführung

OpenResty ist ein Webserver, der Nginx erweitert, indem er mit vielen nützlichen Nginx-Modulen und Lua-Bibliotheken gebündelt wird. OpenResty zeichnet sich durch die Skalierung von Webanwendungen und -diensten aus. Zum Beispiel können Sie mit einem darin enthaltenen Modul Lua-Code schreiben, der direkt in einem Nginx-Worker ausgeführt wird und so Hochleistungsanwendungen ermöglicht.

In diesem Handbuch richten Sie OpenResty von der Quelle aus ein. Die vorgefertigten Pakete für einige Distributionen sind möglicherweise nicht mehr aktuell. Sie werden auch einige einfache Beispielanwendungen mit den einzigartigen Funktionen von OpenResty kennenlernen.

Voraussetzungen

Um dieser Anleitung zu folgen, benötigen Sie:

Beachten Sie, dass Nginx nicht installiert werden sollte. Es ist in OpenResty enthalten, und eine frühere Installation führt zu Konflikten.

Schritt 1 - OpenRestys Quellcode und Abhängigkeiten herunterladen

In diesem Abschnitt installieren wir OpenResty aus dem Quellcode.

Suchen Sie zunächst auf der OpenResty-Website auf der Seite Download nach der neuesten Version des OpenResty-Quellcodes. Laden Sie den Tarball herunter und stellen Sie sicher, dass die Versionsnummer durch die neueste Version ersetzt wird, falls sie geändert wurde.

wget https://openresty.org/download/openresty-.tar.gz

Laden Sie auch die PGP-Schlüsseldatei herunter, damit wir den Inhalt der Datei überprüfen können.

wget https://openresty.org/download/openresty-.tar.gz.asc

Als nächstes müssen wir den öffentlichen Schlüssel des Autors hinzufügen, wie auf der Download-Seite aufgeführt. Zum Zeitpunkt des Schreibens ist dies der öffentliche Schlüssel "+ A0E98066 +". Prüfen Sie jedoch, ob es sich geändert hat. Es ist auf derselben Downloadseite aufgeführt.

gpg --keyserver pgpkeys.mit.edu --recv-key

Sie sollten die folgende Ausgabe sehen (mit Ihrem Benutzernamen anstelle von * sammy *):

Outputgpg: directory `/home/sammy/.gnupg' created
gpg: new configuration file `/home/sammy/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/sammy/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/sammy/.gnupg/secring.gpg' created
gpg: keyring `/home/sammy/.gnupg/pubring.gpg' created
gpg: requesting key A0E98066 from hkp server pgpkeys.mit.edu
gpg: /home/sammy/.gnupg/trustdb.gpg: trustdb created
gpg: key A0E98066: public key "Yichun Zhang (agentzh) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Überprüfen Sie, ob der Name auf dem öffentlichen Schlüssel (in diesem Fall "Yichun Zhang") mit dem Namen auf der OpenResty-Website übereinstimmt.

Überprüfen Sie nun, ob die Signaturdatei mit der heruntergeladenen Datei + .tar.gz übereinstimmt.

gpg openresty-.tar.gz.asc

Sie sehen die folgende Ausgabe:

Outputgpg: assuming signed data in `openresty-.tar.gz'
gpg: Signature made Thu 17 Nov 2016 10:24:29 PM UTC using RSA key ID A0E98066
gpg:  from "Yichun Zhang (agentzh) <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2545 1EB0 8846 0026 195B  D62C B550 E09E A0E9 8066

Diese Warnung wird angezeigt, weil Sie nicht persönlich überprüft haben, ob dieser Schlüssel dem Eigentümer gehört (d. H. Sie haben den öffentlichen Schlüssel nicht mit Ihrem eigenen privaten Schlüssel signiert). Es ist nicht einfach, vollständig zu garantieren, dass dieser öffentliche Schlüssel dem Eigentümer gehört, dem er nicht vollständig vertraut.

In diesem Fall zeigt * Gute Signatur * jedoch an, dass es sich bei dieser Datei tatsächlich um die Datei handelt, die die Autoren von OpenResty verteilen wollten, sodass wir mit der Installation fortfahren können.

Als nächstes extrahieren Sie die heruntergeladene Datei und verschieben Sie sie in das neu erstellte Verzeichnis.

tar -xvf openresty-.tar.gz
cd openresty-

Wir müssen die notwendigen Tools installieren, um OpenResty zu kompilieren. Weitere Informationen zum Kompilieren von Programmen aus dem Quellcode finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-compile-and-install-packages-from-source-using-make-on-a-vps [ dieses Tutorial über die Verwendung von make zur Installation von Paketen aus dem Quellcode].

sudo apt-get install build-essential

Wir müssen auch einige andere Pakete installieren:

  • readline: Wird von OpenResty für die Befehlszeilenschnittstelle verwendet.

  • ncurses: Dies ist eine weitere Software, die von OpenResty für die Befehlszeilenschnittstelle verwendet wird.

  • PCRE: Diese Software stellt OpenResty Funktionen für reguläre Ausdrücke zur Verfügung.

  • OpenSSL: OpenSSL wird für die sichere Kommunikation verwendet, z. B. TLS (HTTPS).

  • Perl: Perl ist eine Programmiersprache, die in OpenResty verwendet werden kann.

Führen Sie den folgenden Befehl aus, um diese Pakete zu installieren:

sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl

Wir haben jetzt alle Komponenten, die zum Erstellen und Installieren von OpenResty erforderlich sind.

Schritt 2 - Installieren von OpenResty

Wir werden OpenResty mit regulären PCRE-Ausdrücken und IPv6-Unterstützung konfigurieren. Wir werden auch einen Teil des Erstellungsprozesses parallelisieren, indem wir das Flag "+ -j2 " angeben, das " make +" angibt, dass 2 Jobs gleichzeitig ausgeführt werden können. Dieser Befehl testet hauptsächlich, ob alle Abhängigkeiten auf Ihrem System verfügbar sind, und sammelt Informationen, die später vom Erstellungsschritt verwendet werden. Es werden auch bereits einige Abhängigkeiten erstellt, wie z. B. LuaJIT.

./configure -j2 --with-pcre-jit --with-ipv6

Anschließend können Sie OpenResty erstellen, indem Sie erneut die Flags "+ -j2 +" für die Parallelität angeben. Dadurch wird OpenResty selbst kompiliert.

make -j2

Schließlich können Sie OpenResty installieren. Mit + sudo + stellen Sie sicher, dass alle Dateien an die richtigen Speicherorte auf dem System kopiert werden können, damit OpenResty sie finden kann, wenn es ausgeführt wird.

sudo make install

Sie müssen HTTP-Verbindungen in Ihrer Firewall zulassen, damit der Webserver funktioniert.

sudo ufw allow http

Optional können Sie HTTPS auch mit + sudo ufw allow https + zulassen, wenn Sie es verwenden möchten. Sie können die Änderung in der Firewall überprüfen, indem Sie deren Status überprüfen.

sudo ufw status

Sie sollten in der angezeigten Ausgabe den zulässigen HTTP-Verkehr (Port + 80 +) sowie HTTPS (Port + 443 +) sehen, wenn Sie ihn hinzugefügt haben.

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere


OpenSSH (v6)               ALLOW       Anywhere (v6)

Sie können jetzt überprüfen, ob die Installation funktioniert hat. Starten Sie zunächst OpenResty.

sudo /usr/local/openresty/bin/openresty

Es wird sofort ohne Textausgabe beendet, wenn der Befehl erfolgreich ist. In diesem Fall können Sie in Ihrem Browser "+ http: // +" aufrufen. Es wird eine Seite mit der Aufschrift "Willkommen bei OpenResty!" Angezeigt, auf der bestätigt wird, dass das Programm vollständig installiert ist und funktioniert.

Sie können den OpenResty-Server jetzt stoppen.

sudo /usr/local/openresty/bin/openresty -s quit

OpenResty ist installiert, Sie müssen OpenResty jedoch so konfigurieren, dass es beim Start ausgeführt wird, damit der Server nicht manuell gestartet werden muss.

Schritt 3 - Einrichten von OpenResty als Dienst

Hier richten wir OpenResty als Dienst ein, damit es beim Booten automatisch gestartet wird. Wir werden dies mit dem Dienst + systemd + init tun. Weitere Informationen finden Sie unter this systemd basics tutorial und unter https://www .digitalocean.com / community / tutorials / verständnissystemd-einheiten-und-einheiten-dateien [dieses einheiten-datei-tutorial] für informationen zu einheiten-dateien.

Beginnen Sie, indem Sie mit + nano + oder Ihrem bevorzugten Texteditor eine neue + systemd + - Datei erstellen.

sudo nano /etc/systemd/system/openresty.service

In diesem Tutorial kopieren wir die Standard-Nginx-Datei "+ systemd +" von einer Neuinstallation und ändern sie für OpenResty. Die vollständige Datei sieht so aus und sollte in die gerade geöffnete Datei eingefügt werden. Wir werden jeden Teil der Datei durchgehen, um zu erklären, was sie tut.

/etc/systemd/system/openresty.service

# Stop dance for OpenResty
# A modification of the Nginx systemd script
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the Nginx process.
# If, after 5s (--retry QUIT/5) OpenResty is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if OpenResty is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# Nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A dynamic web platform based on Nginx and LuaJIT.
After=network.target

[Service]
Type=forking
PIDFile=/run/openresty.pid
ExecStartPre=/usr/local/openresty/bin/openresty -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/openresty/bin/openresty -g 'daemon on; master_process on;'
ExecReload=/usr/local/openresty/bin/openresty -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/openresty.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

Im Abschnitt "+ [Einheit] +":

  • + After = network.target + bewirkt, dass OpenResty nach dem Hochfahren des Netzwerks gestartet wird, sodass OpenResty Ports binden und abhören kann. Dadurch ist es von außen erreichbar.

Im Abschnitt "+ [Service] +":

  • + Type = forking + teilt + systemd + mit, dass der in + ExecStart + aufgerufene Prozess den Service im Hintergrund startet und sich der Prozess danach selbst stoppt.

  • + PIDFile = / run / openresty.pid + teilt + systemd + mit, wo sich die PID-Datei befindet, die OpenResty beim Start erstellt. Dadurch kann + systemd + feststellen, ob OpenResty noch ausgeführt wird.

  • + ExecStartPre = / usr / local / openresty / bin / openresty -t -q -g 'daemon on; master_process on; '+ `ruft das OpenResty-Skript auf, ohne es zu starten. Das `+ -t + Flag teilt OpenResty mit, dass nur die Konfigurationsdatei getestet werden soll. Das Flag "+ -q " gibt an, dass alle fehlerfreien Ausgaben unterdrückt werden sollen. das ` -g ` Flag setzt den ` Daemon der globalen Direktiven auf; master_process on + `, der OpenResty mitteilt, dass es im Hintergrund als Daemon gestartet werden soll. Wir führen dieses Skript als "+ ExecStartPre " aus, damit " systemd +" nicht versucht, OpenResty zu starten, wenn die Konfigurationsdatei ungültig ist, da bei diesem Befehl ein Fehler auftritt.

  • `+ ExecStart = / usr / local / openresty / bin / openresty -g 'daemon on; master_process on; '' startet OpenReesty tatsächlich. Dies ist dasselbe wie " ExecStartPre " ohne das Flag " -t +".

  • + ExecReload = / usr / local / openresty / bin / openresty -g 'daemon on; master_process on; ' -s reload + `weist + systemd + an, diesen Befehl auszuführen, wenn wir + systemctl reload openresty + ausführen. Das `+ -s + Flag weist OpenResty an, die Konfigurationsdatei neu zu laden.

  • + ExecStop = - / sbin / start-stop-daemon --quiet --stop --retry QUIT / 5 --pidfile / run / openresty.pid + weist + systemd + an, diesen Befehl auszuführen, wenn OpenResty gestoppt wird. Es sendet "+ SIGSTOP " an den in der PID-Datei aufgelisteten Prozess. Wenn es 5 Sekunden später noch läuft, übernimmt " systemd +" die Kontrolle über die folgenden beiden Optionen.

  • + TimeoutStopSec = 5 + teilt + systemd + mit, dass der Prozess in 5 Sekunden gestoppt werden soll. Wenn es nicht stoppt, versucht + systemd +, OpenRest zu stoppen.

  • + KillMode = mixed + gibt an, wie + systemd + versuchen soll, OpenResty zu stoppen, wenn es nicht nach 5 Sekunden gestoppt wurde.

Im Abschnitt "+ [Install] +":

  • + WantedBy = multi-user.target + teilt + systemd + mit, wann der Dienst gestartet werden soll, wenn er so konfiguriert ist, dass er beim Booten gestartet wird. + multi-user.target + bedeutet, dass der Dienst nur gestartet wird, wenn ein Mehrbenutzersystem gestartet wurde, d.h. Wir können OpenResty als einen anderen Benutzer ausführen.

Das ist alles für die Datei "+ etc / systemd / system / openresty.service +". Als Nächstes müssen wir die OpenResty Nginx-Konfigurationsdatei anpassen und den Dienst aktivieren.

Öffnen Sie zuerst die Konfigurationsdatei.

sudo nano /usr/local/openresty/nginx/conf/nginx.conf

Standardmäßig sieht es so aus:

Default /usr/local/openresty/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
   worker_connections  1024;
}

. . .

Löschen Sie alles vor der Zeile + events {+ und ersetzen Sie es durch die folgenden drei Zeilen:

/Usr/local/openresty/nginx/conf/nginx.conf aktualisiert

events {
   worker_connections  1024;
}

. . .

Diese Datei stellt sicher, dass wir als * www-data * -Benutzer ausgeführt werden und dass "+ systemd " erkennen kann, wann OpenResty ausgeführt wird, und zwar aufgrund der " pid +" - Zeile, die von OpenResty beim Start erstellt wird.

Speichern und schließen Sie die Datei.

Erstellen Sie als Nächstes das Protokollverzeichnis.

sudo mkdir /var/log/openresty

Laden Sie den Dienst "+ systemd" neu, damit er Ihre Datei finden kann.

sudo systemctl daemon-reload

Starten Sie nun OpenResty über + systemd +.

sudo systemctl start openresty

Sie können jetzt + http: // + erneut aufrufen und dieselbe Webseite wie zuvor anzeigen. Der Unterschied besteht darin, dass der Prozess jetzt von "+ systemd +" gestartet wurde.

Der letzte Schritt besteht darin, den Dienst zu aktivieren, der sicherstellt, dass OpenResty beim Booten gestartet wird.

sudo systemctl enable openresty

Weitere Informationen zum Verwalten von + systemd + -Diensten und -Einheiten finden Sie unter services und Einheiten Tutorial.

Nachdem wir den Dienst konfiguriert haben, können wir OpenResty so konfigurieren, dass er z. Melden Sie sich an einem gemeinsamen Speicherort an.

Schritt 4 - OpenResty konfigurieren

Für die Konfiguration von OpenResty haben wir die Standardkonfiguration von Nginx als Referenz verwendet, damit sie weitgehend Ihren Kenntnissen entspricht.

Öffnen Sie zunächst die OpenResty-Konfigurationsdatei erneut:

sudo nano /usr/local/openresty/nginx/conf/nginx.conf

Dieses Mal werden wir den "+ http" -Block ändern und den "+ server" -Block innerhalb dieses "+ http" -Blocks in eine neue Datei verschieben, um eine bessere Struktur zu erhalten. Suchen Sie zuerst die Zeile + http {+ und löschen Sie danach alles außer der letzten Zeile mit dem entsprechenden +} +.

Aktuelle /usr/local/openresty/nginx/conf/nginx.conf

user www-data;
worker_processes  auto;
pid /run/openresty.pid;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;

   . . .
}

Kopieren Sie dann Folgendes in den + http + - Block, sodass Ihre gesamte Datei so aussieht. Wir werden die Änderungen einzeln durchgehen.

/usr/local/openresty/nginx/conf/nginx.conf

user www-data;
worker_processes  auto;
pid /run/openresty.pid;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;

   sendfile        on;
   tcp_nopush      on;
   tcp_nodelay     on;

   keepalive_timeout  65;

   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
   ssl_prefer_server_ciphers on;

   access_log /var/log/openresty/access.log;
   error_log /var/log/openresty/error.log;

   gzip  on;
   gzip_disable "msie6";

   include ../sites/*;
}

Speichern und schließen Sie die Datei.

Die Änderungen, die wir an der Standarddatei vorgenommen haben, sind:

  • Deaktivieren Sie + tcp_nopush on; +, wodurch OpenResty angewiesen wird, nur vollständige Pakete zu senden. Diese Option ist nützlich, wenn Sie die Option + sendfile + verwenden, mit der OpenResty das Senden statischer Dateien an einen Client optimieren kann.

  • Hinzufügen von + tcp_nodelay on; +. Diese Option wird versuchen, Pakete so schnell wie möglich zu senden, was möglicherweise der obigen Option zuwiderläuft, aber zu einem anderen Zeitpunkt verwendet wird. + tcp_nodelay + wird nur verwendet, wenn die Option + keepalive + für HTTP-Anforderungen verwendet wird. Hierbei handelt es sich um eine Verbindung zu einem Webserver über einen Webbrowser, die den Aufwand vermeidet, bei jeder Anforderung eine HTTP-Verbindung herzustellen.

  • Hinzufügen und Ändern der Zeilen "+ ssl_protocols " und " ssl_prefer_server_ciphers +". Diese Optionen konfigurieren die SSL-Optionen von OpenResty. Wir haben alte Protokolle entfernt, die für bekannte Angriffe auf HTTPS anfällig sind, z. B. den POODLE-Angriff.

  • Hinzufügen der Zeilen "+ access_log " und " error_log ", wodurch konfiguriert wird, wo die Protokolle des Webservers abgelegt werden. Wir speichern die Protokolle im Verzeichnis ` / var / log / openresty +`, das wir im vorherigen Schritt erstellt haben.

  • Entfernen Sie das Kommentarzeichen "+ gzip on " und fügen Sie " gzip_disable" msie6 "+" hinzu. Diese Optionen konfigurieren GZIP, wodurch Webseiten komprimiert werden, sodass weniger Daten übertragen werden müssen. Wir fügen auch die letzte Option hinzu, da Internet Explorer 6 (und älter) GZIP-Inhalte nicht immer ordnungsgemäß verarbeitet.

  • Hinzufügen von + include ../ sites / *; +, wodurch OpenResty angewiesen wird, nach zusätzlichen Konfigurationsdateien im Verzeichnis + / usr / local / openresty / nginx / sites + zu suchen, die in Kürze erstellt werden.

  • Entfernen Sie alle "+ server +" - Blöcke, die wir später in diesem Schritt in eine neue Datei verschieben.

Als nächstes erstellen Sie das neue Verzeichnis "+ sites ", das wir in der Zeile " include +" angegeben haben.

sudo mkdir /usr/local/openresty/nginx/sites

Erstellen Sie die "+ default +" - Site.

sudo nano /usr/local/openresty/nginx/sites/default.conf

Fügen Sie in dieser neuen Datei Folgendes hinzu. Dies ist die Verschiebung des ursprünglichen Serverblocks aus "+ nginx.conf +", enthält jedoch Inline-Kommentare, um weitere Einzelheiten zu erfahren.

/usr/local/openresty/nginx/sites/default.conf

server {
   # Listen on port 80.
   listen 80 default_server;
   listen [::]:80 default_server;

   # The document root.
   root /usr/local/openresty/nginx/html/default;

   # Add index.php if you are using PHP.
   index index.html index.htm;

   # The server name, which isn't relevant in this case, because we only have one.
   server_name _;

   # When we try to access this site...
   location / {
       # ... first attempt to serve request as file, then as a directory,
       # then fall back to displaying a 404.
       try_files $uri $uri/ =404;
   }

   # Redirect server error pages to the static page /50x.html.
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root /usr/local/openresty/nginx/html;
   }
}

Speichern und schließen Sie die Datei.

Erstellen Sie jetzt ein neues Verzeichnis für diese Site.

sudo mkdir /usr/local/openresty/nginx/html/default

Verschieben Sie dann die ursprüngliche "+ index.html" von ihrem ursprünglichen Speicherort in das neue Verzeichnis.

sudo mv /usr/local/openresty/nginx/html/index.html /usr/local/openresty/nginx/html/default

Starten Sie schließlich OpenResty neu, um diese neue Site zu verwenden.

sudo systemctl restart openresty

Sie können jetzt wieder + http: // + besuchen und die gleiche Webseite wie zuvor sehen.

Nachdem OpenResty vollständig konfiguriert ist, können wir einige der von OpenResty eingeführten Funktionen ausprobieren, die standardmäßig nicht in Nginx verfügbar sind.

Schritt 5 - Verwenden des OpenResty Lua-Moduls

In diesem Abschnitt werden wir uns eine Kombination verschiedener von OpenResty hinzugefügter Module ansehen, die alle für Lua-Skripte existieren. Wir werden in diesem Schritt + / usr / local / openresty / nginx / sites / default.conf + ändern, also öffne es zuerst.

sudo nano /usr/local/openresty/nginx/sites/default.conf

Zuerst betrachten wir die Konfigurationsoption + content_by_lua_block +. Kopieren Sie den "+ location " - Block aus der folgenden Beispielkonfiguration und fügen Sie ihn in den " server " - Block unter den beiden vorhandenen " location +" - Blöcken ein.

/usr/local/openresty/nginx/sites/default.conf content_by_lua_block Beispiel

server {
   . . .

   location /example {
        default_type 'text/plain';

        content_by_lua_block {
            ngx.say('Hello, Sammy!')
        }
   }
}

Speichern und schließen Sie die Datei und laden Sie die Konfiguration erneut.

sudo systemctl reload openresty

Wenn Sie jetzt "+ http: /// example +" besuchen, wird eine Seite mit der Aufschrift "Hallo, Sammy!" Angezeigt. Lassen Sie uns erklären, wie dies funktioniert.

Die Konfigurationsanweisung + content_by_lua_block + führt alles darin als Lua-Code aus. Hier haben wir die Lua-Funktion + ngx.say + verwendet, um die Nachricht * Hello, Sammy! * Auf die Seite zu drucken.

Ersetzen Sie für ein anderes Beispiel den Inhalt des Blocks + location / example + durch Folgendes:

/usr/local/openresty/nginx/sites/default.conf content_by_lua_file Beispiel

server {
   . . .

   location /example {
        default_type 'text/plain';

        content_by_lua_file /usr/local/openresty/nginx/html/default/index.lua;
   }
}

Das + content_by_lua_file + lädt den Lua-Inhalt aus einer externen Datei. Erstellen wir also die oben angegebene: + / usr / local / openresty / nginx / html / default / index.lua +.

sudo nano /usr/local/openresty/nginx/html/default/index.lua

Fügen Sie der Datei Folgendes hinzu, speichern und schließen Sie sie.

/usr/local/openresty/nginx/html/default/index.lua

local name = ngx.var.arg_name or "Anonymous"
ngx.say("Hello, ", name, "!")

Dies ist ein einfaches Teil von Lua, das einen Abfrageparameter in der URL "+ name +" liest und die Begrüßungsnachricht anpasst. Wenn kein Parameter übergeben wird, wird stattdessen "Anonym" verwendet.

Laden Sie die Konfiguration erneut.

sudo systemctl reload openresty

Besuchen Sie jetzt in Ihrem Browser "+ http: /// example? Name = ". Daraufhin wird * Hallo, Sammy! * Angezeigt. Sie können den Abfrageparameter " name +" ändern oder ganz weglassen.

Hello, Sammy!

Sie können auch den Abfrageparameter "+ name +" ändern, um einen anderen Namen anzuzeigen.

Fazit

In diesem Artikel richten Sie OpenResty ein, mit dem Sie Lua-Skripte in einem Nginx-Worker verwenden können. Es ist möglich, komplexere Lua-Skripte zu erstellen. Sie können den Zugriff beispielsweise auch mit Lua-Skripten einschränken oder bestimmte Anforderungen mit Lua neu schreiben. Sie finden die Dokumentation auf der GitHub-Seite von lua-nginx-module. Es gibt sogar komplette Web-Frameworks, die Lua auf OpenResty verwenden, wie zum Beispiel Lapis.

Wenn Sie mehr erfahren möchten, besuchen Sie die OpenResty-Website. Da OpenResty nur eine erweiterte Nginx-Installation ist, erfahren Sie unter https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual, wie Sie Serverblöcke einrichten -hosts-on-ubuntu-16-04 [Tutorial zum Blockieren von Nginx-Servern], aber achten Sie darauf, die in diesem Tutorial verwendeten Pfade durch die in diesem Tutorial verwendeten Pfade zu ersetzen.