0Pricing
Lua Academy · Lekcja

Architektura OpenResty

Proszę zrozumieć, jak ngx_lua osadza LuaJIT w fazach obsługi żądań Nginx.

Architektura OpenResty to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Czym jest OpenResty?

OpenResty to platforma internetowa osadzająca LuaJIT w Nginx. Zmienia Nginx w pełnoprawny serwer aplikacji internetowych, w którym kod Lua obsługuje żądania.

Moduł ngx_lua

Moduł ngx_lua integruje LuaJIT z Nginx. Udostępnia interfejs API ngx.* umożliwiający dostęp do danych żądania i odpowiedzi, liczników czasu, pamięci współdzielonej oraz cosocketów.

Fazy obsługi żądania w Nginx

OpenResty udostępnia fazy przetwarzania żądań Nginx jako hooki Lua: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.

Podstawy nginx.conf

Handlery Lua należy konfigurować w nginx.conf za pomocą odpowiedniej dyrektywy fazy.

# nginx.conf snippet
server {
  listen 80;
  location /hello {
    content_by_lua_block {
      ngx.header["Content-Type"] = "text/plain"
      ngx.say("Hello from Lua!")
    }
  }
}

Model jednej korutyny na żądanie

Każde przychodzące żądanie otrzymuje własną korutynę Lua. Gdy korutyna zawiesza się (na przykład podczas oczekiwania na bazę danych), Nginx obsługuje inne żądania. Umożliwia to wysoką współbieżność bez blokowania.

API ngx

Najważniejsze funkcje ngx: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().

Stan pamięci współdzielonej

Procesy robocze współdzielą dane za pośrednictwem ngx.shared.DICT — współdzielonego słownika zadeklarowanego w nginx.conf ze stałym rozmiarem pamięci.

# nginx.conf
lua_shared_dict my_cache 10m;
-- In Lua:
ngx.shared.my_cache:set("key", "value", 60)

Cosockety

Cosockety OpenResty zapewniają nieblokującą obsługę TCP/UDP i HTTP. Integrują się z pętlą zdarzeń Nginx, dzięki czemu Lua może wykonywać asynchroniczne operacje wejścia-wyjścia bez blokowania procesu roboczego.

API timerów

ngx.timer.at(delay, fn) planuje wykonanie funkcji Lua po upływie określonego czasu. ngx.timer.every(interval, fn) wykonuje ją okresowo.

Charakterystyka wydajności

OpenResty obsługuje dziesiątki tysięcy równoczesnych połączeń na proces roboczy. W połączeniu z szybkością LuaJIT i sprawdzonym mechanizmem multipleksowania wejścia-wyjścia Nginx konkuruje z Go i Node.js w zadaniach związanych z wejściem-wyjściem.

Typowe zastosowania

  • Bramy API i ograniczanie liczby żądań.
  • Oprogramowanie pośredniczące do uwierzytelniania i autoryzacji.
  • Dynamiczne przekierowywanie żądań.
  • Warstwy buforowania Redis i Memcached.

Pytanie dotyczące OpenResty

W jaki sposób OpenResty osiąga wysoką współbieżność?

Podsumowanie: architektura OpenResty

OpenResty osadza LuaJIT w Nginx. Każde żądanie jest wykonywane jako korutyna. API ngx.* zapewnia dostęp do danych żądania i odpowiedzi, pamięci współdzielonej, timerów oraz nieblokujących cosocketów.

Często zadawane pytania

Czy lekcja „Architektura OpenResty” jest bezpłatna?

Tak — pełny tekst „Architektura OpenResty” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Architektura OpenResty”?

Proszę zrozumieć, jak ngx_lua osadza LuaJIT w fazach obsługi żądań Nginx. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Architektura OpenResty”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Architektura OpenResty
  2. Obsługa żądań HTTP w Lua
  3. Cosockety i nieblokujący TCP
  4. Słowniki pamięci współdzielonej
← Powrót do Lua Academy