nginx ist unser am häufigsten verwendeter Server, der häufig für die Inhaltsverteilung und als Reverse-Proxy verwendet wird. Lua ist eine C-ähnliche Skriptsprache, die in der Spielebranche weit verbreitet ist. Vor zehn Jahren, als Webspiele beliebt waren, kaufte ich den Quellcode eines legendären Spiels und der Server im Spiel wurde mit Lua implementiert. Wir verwenden es häufig mit Nginx, Envoy und Redis, um einige einfache und praktische Funktionen auszuführen, z. B. Über- und Unterverkauf, Rankings usw., um die Häufigkeit von Anforderungen zu verringern, die das Backend-Java erreichen Als nächstes beginnen wir mit dem Erstellen des Nginx+Lua-Images. Der Grund, warum wir es selbst erstellen, ist, dass wir befürchten, dass die von anderen bereitgestellten Images Viren enthalten. In den inoffiziellen Docker-Images sind viele Viren enthalten, auf die jeder achten muss. Dieser Artikel verwendet die OpenResty-Version von Nginx. Spezifische Anweisungen zu OpenResty, Nginx und Lua finden Sie in Baidu. Bevor Sie das Image erstellen, müssen Sie die komprimierten Pakete des Moduls nginx-module-vts und openresty-1.15.8.3 vorbereiten. Sie können diese beiden komprimierten Pakete finden, indem Sie Baidu durchsuchen. Ich weiß nicht, ob die offiziellen Kontoartikel externe Links einfügen können. Die Funktion des Moduls nginx-module-vts besteht darin, die Zugriffsdaten von nginx zu zählen. Wenn Sie Prometheus+Graphiana verwenden, um nginx zu überwachen, müssen Sie dieses Modul installieren. Lassen Sie es uns gemeinsam kompilieren. Erstellen Sie ein Verzeichnis auf dem Server cd /usr/local/docker mkdir -p nginx-lua/build cd nginx-lua Das vollständige Verzeichnis nach der Erstellung lautet wie folgt: root@today2:/usr/local/docker/nginx-lua# Baum . ├── bauen │ ├── Docker-Datei │ ├── nginx-module-vts.zip │ └── openresty-1.15.8.3.tar.gz ├── docker-compose.yml ├── lua │ ├── test.lua ├── nginx.conf ├── wwwroot │ ├── index.html Docker-DateiLegen Sie die Dockerfile-Datei in das Build-Verzeichnis und legen Sie auch die heruntergeladenen Dateien nginx-module-vts.zip und openresty-1.15.8.3.tar.gz in das Build-Verzeichnis. VON ubuntu:xenial # Datenquelle WORKDIR /etc/apt aktualisieren RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universum multiverse' > Quellenliste RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universum multiverse' >> Quellenliste RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universum multiverse' >> Quellenliste RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports Haupteingeschränktes Universum Multiversum' >> Quellenliste Führen Sie apt-get update aus. # Abhängigkeiten installieren RUN apt-get install unzip make gcc libpcre3-dev libssl-dev perl build-essential curl zlib1g-dev --assume-yes # Kopieren Sie das Tool-Paket ADD openresty-1.15.8.3.tar.gz /usr/local/src HINZUFÜGEN von nginx-module-vts.zip /usr/local/src # nginx-modul-vts ARBEITSVERZEICHNIS /usr/local/src Ausführen: unzip nginx-module-vts.zip Arbeitsverzeichnis /usr/local/src/openresty-1.15.8.3 Führen Sie den Befehl rm -rf ./Makefile aus. AUSFÜHREN ./configure --add-module=/usr/local/src/nginx-module-vts FÜHREN SIE MAKE && MAKE INSTALLIEREN AUS # Konfigurieren Sie Nginx, kommentieren Sie es aus und hängen Sie es beim Starten des Containers in den Container ein. # ADD nginx.conf /usr/local/openresty/nginx/conf/ ARBEITSVERZEICHNIS / AUSSETZEN 80 CMD ["/usr/local/openresty/nginx/sbin/nginx", "-c", "/usr/local/openresty/nginx/conf/nginx.conf", "-g", "Daemon aus;"] nginx.confBenutzer root; Arbeiterprozesse automatisch; worker_rlimit_nofile 65535; Ereignisse { Arbeiterverbindungen 102400; verwenden Sie epoll; } http { Server-Tokens aus; mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; #Zugriffslog /var/log/nginx/access.log; Zugriff_Abmeldung; Fehlerprotokoll /var/log/nginx/error.log; KeepAlive-Timeout 65; maximale Körpergröße des Kunden: 10 m; gzip an; gzip_disable "msie6"; gzip_min_länge 1000; gzip_proxied, abgelaufen, kein Cache, kein Store, private Authentifizierung; gzip_types Text/einfache Anwendung/XML-Anwendung/Javascript-Text/CSS-Anwendung/X-Javascript; # Die folgenden 3 Zeilen dienen zum Festlegen der Nginx-Verkehrsstatistik nach der Installation des Moduls nginx-module-vts. In diesem Artikel geht es hauptsächlich um Lua, daher können die folgenden 3 Zeilen auskommentiert werden: vhost_traffic_status_zone; vhost_traffic_status_filter_by_host ein; vhost_traffic_status_filter_by_set_key $uri uri::$server_name; Server { hören Sie 80; root /usr/share/nginx/html; # Ob der Cache für Lua-Skripte aktiviert werden soll. Stellen Sie ihn in der Debugging-Phase auf „Aus“ (nach dem Ändern von Lua-Dateien muss nginx nicht neu gestartet werden). Kommentieren Sie diese Zeile in der formalen Umgebung unbedingt aus, um die Leistung zu verbessern lua_code_cache off; # Dieser Speicherort ist die Einstellung für den tatsächlichen Aufruf des Lua-Skriptspeicherorts /lua/test { #Geben Sie an, dass der Rückgabetyp JSON ist Standardtyp "Anwendung/JSON"; #Geben Sie an, dass test.lua den Inhalt beim Zugriff auf /lua/test zurückgibt. Beachten Sie, dass dieser Pfad der Pfad im Container ist und nicht mit dem Host verwechselt werden darf. content_by_lua_file '/usr/local/lua/test.lua'; } # Auch Verkehrsstatistiken können Sie auskommentieren location /status { vhost_traffic_status_anzeige; vhost_traffic_status_anzeige_format html; } } } docker-compose.ymlVersion: '3.1' Leistungen: nginx: Build: Build # Der Build auf der linken Seite bedeutet, dass der aktuelle Container ein Image erstellen muss, und der Build auf der rechten Seite bedeutet, dass sich die Image-Erstellungsdatei im Build-Verzeichnis befindet. Neustart: immer Containername: nginx network_mode: host # Sie müssen den Hostmodus nicht angeben, er dient nur der Benutzerfreundlichkeit: - ./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf - ./log:/var/log/nginx/ - ./wwwroot:/usr/share/nginx/html - ./lua:/usr/local/lua test.luaErstellen Sie eine test.lua-Datei im Verzeichnis ./lua ngx.say('{"code": 1, "msg": "hallo Welt!"}') Besuchen Sie nach dem Starten des Containers IP:80/lua/test und Sie können die Ausgabe {"code": 1, "msg": "hello world!"} sehen, die angibt, dass das Lua-Skript wirksam geworden ist. An diesem Punkt wurde nginx+lua erstellt. In zukünftigen Artikeln werden wir einige häufig verwendete Lua-Skripte vorstellen, z. B.: JWT-Verifizierung, Redis-Operation, Nachrichtenwarteschlange usw., die viele Funktionen realisieren können, solange Sie daran denken. Dies ist das Ende dieses Artikels über die Implementierung von Zehntausenden gleichzeitigen Aufrufen auf einer einzelnen Maschine mit nginx+lua. Weitere relevante Inhalte zur gleichzeitigen Ausführung von nginx lua auf einer einzelnen Maschine finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Anwendung von CSS3-Animationseffekten in Aktivitätsseiten
>>: Die „3I“-Standards für erfolgreiche Printwerbung
Linux-Befehl zum Ändern des Hostnamens 1. Wenn Si...
Inhaltsverzeichnis 1. Wie verwende ich Mixin? 2. ...
Im vorherigen Artikel wurde der Docker-Dienst ins...
Inhaltsverzeichnis Wir haben in einem früheren Ar...
In unserem Leben, bei der Arbeit und beim Studium ...
In diesem Artikel wird der spezifische JavaScript...
In diesem Artikel wird der spezifische Code für R...
Inhaltsverzeichnis Einführung in den NFS-Dienst W...
<br />Bevor Browser die nächste Generation v...
Inhaltsverzeichnis 1. Installation und Betrieb vo...
Viele Unternehmen bieten derzeit Sonderaktionen m...
Es ist sehr üblich, Bilder auf einer Seite hervor...
Was ist Redis Cluster? Redis Cluster ist eine von...
Inhaltsverzeichnis Globale Variable „globalData“ ...
Die Vorteile dieser Lösung liegen in der Einfachh...