0Pricing
Lua Academy · Pelajaran

Arsitektur OpenResty

Pahami cara ngx_lua menyematkan LuaJIT dalam fase permintaan Nginx.

Arsitektur OpenResty adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Apa Itu OpenResty?

OpenResty adalah platform web yang menyematkan LuaJIT ke dalam Nginx. OpenResty mengubah Nginx menjadi server aplikasi web berfitur lengkap, tempat kode Lua menangani permintaan.

Modul ngx_lua

Modul ngx_lua mengintegrasikan LuaJIT ke dalam Nginx. Modul ini menyediakan API ngx.* untuk mengakses data permintaan/tanggapan, pengatur waktu, memori bersama, dan soket kooperatif.

Fase Pemrosesan Permintaan Nginx

OpenResty mengekspos fase pemrosesan permintaan Nginx sebagai kait Lua: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.

Dasar-Dasar nginx.conf

Konfigurasikan penangan Lua dalam nginx.conf menggunakan direktif fase yang sesuai.

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

Model Satu Coroutine per Permintaan

Setiap permintaan masuk mendapatkan coroutine Lua-nya sendiri. Saat coroutine menangguhkan eksekusi (misalnya, menunggu basis data), Nginx melayani permintaan lain. Ini memungkinkan konkurensi tinggi tanpa pemblokiran.

API ngx

Fungsi utama ngx: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, dan ngx.exit().

Status Memori Bersama

Proses pekerja berbagi data melalui ngx.shared.DICT — kamus bersama yang dideklarasikan dalam nginx.conf dengan ukuran memori tetap.

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

Cosocket

Cosocket OpenResty menyediakan TCP/UDP dan HTTP non-pemblokiran. Cosocket ini terintegrasi dengan loop peristiwa Nginx sehingga Lua dapat melakukan I/O asinkron tanpa memblokir pekerja.

API Pengatur Waktu

ngx.timer.at(delay, fn) menjadwalkan fungsi Lua agar dijalankan setelah jeda tertentu. ngx.timer.every(interval, fn) menjalankannya secara berkala.

Profil Performa

OpenResty menangani puluhan ribu koneksi serentak per pekerja. Jika dipadukan dengan kecepatan LuaJIT dan multiplexing I/O Nginx yang telah teruji, OpenResty mampu bersaing dengan Go dan Node.js untuk beban kerja yang terikat pada I/O.

Kasus Penggunaan Umum

  • Gerbang API dan pembatasan laju.
  • Middleware autentikasi/otorisasi.
  • Perutean permintaan dinamis.
  • Lapisan cache Redis dan Memcached.

Pertanyaan tentang OpenResty

Bagaimana OpenResty mencapai konkurensi tinggi?

Ringkasan: Arsitektur OpenResty

OpenResty menyematkan LuaJIT ke dalam Nginx. Setiap permintaan dijalankan sebagai coroutine. API ngx.* menyediakan akses ke data permintaan/respons, memori bersama, pengatur waktu, dan cosocket non-pemblokiran.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Arsitektur OpenResty” gratis?

Ya — teks lengkap “Arsitektur OpenResty” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Arsitektur OpenResty”?

Pahami cara ngx_lua menyematkan LuaJIT dalam fase permintaan Nginx. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Arsitektur OpenResty” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Arsitektur OpenResty
  2. Menangani Permintaan HTTP dalam Lua
  3. Cosocket dan TCP Non-Pemblokiran
  4. Kamus Memori Bersama
← Kembali ke Lua Academy