Thứ ba, 28/02/2017 | 00:00 GMT+7

Cách sử dụng OpenResty Web Framework cho Nginx trên Ubuntu 16.04

OpenResty là một web server mở rộng Nginx bằng cách gói nó với nhiều module Nginx hữu ích và thư viện Lua. OpenResty vượt trội trong việc mở rộng các ứng dụng và dịch vụ web. Ví dụ: một module mà nó bao gồm cho phép bạn viết mã Lua sẽ thực thi trực tiếp trong Nginx worker, cho phép các ứng dụng hiệu suất cao.

Trong hướng dẫn này, bạn sẽ cài đặt OpenResty từ nguồn; các gói được tạo sẵn cho một số bản phân phối có thể đã lỗi thời. Bạn cũng sẽ khám phá một số ứng dụng ví dụ đơn giản với các tính năng độc đáo của OpenResty.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Lưu ý không nên cài đặt Nginx. Nó có trong OpenResty và cài đặt nó trước thời hạn sẽ xung đột.

Bước 1 - Download Mã nguồn và Phụ thuộc của OpenResty

Trong phần này, ta sẽ cài đặt OpenResty từ nguồn.

Trước tiên, hãy tìm bản phát hành mã nguồn OpenResty mới nhất từ trang Download trên trang web OpenResty. Download tarball, đảm bảo thay thế số version bằng version mới nhất nếu nó đã thay đổi.

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

Download cả file khóa PGP để ta có thể xác minh nội dung của file .

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

Tiếp theo, ta cần thêm public key của tác giả như được liệt kê trên trang download . Tại thời điểm viết bài, đây là public key A0E98066 . Tuy nhiên, hãy kiểm tra xem nó đã thay đổi chưa; nó được liệt kê trên cùng một trang download .

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

Bạn sẽ thấy kết quả sau (với tên user của bạn thay cho sammy ):

Output
gpg: 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) <agentzh@gmail.com>" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)

Kiểm tra xem tên trên public key (trong trường hợp này là “Yichun Zhang”) trùng với tên được liệt kê trên trang web OpenResty.

Bây giờ, hãy kiểm tra xem file chữ ký có trùng với file .tar.gz download hay không.

  • gpg openresty-1.11.2.2.tar.gz.asc

Bạn sẽ thấy kết quả sau:

Output
gpg: assuming signed data in `openresty-1.11.2.2.tar.gz' gpg: Signature made Thu 17 Nov 2016 10:24:29 PM UTC using RSA key ID A0E98066 gpg: Good signature from "Yichun Zhang (agentzh) <agentzh@gmail.com>" 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

Cảnh báo bạn thấy là do bạn chưa xác minh cá nhân xem khóa này có thuộc về chủ sở hữu hay không (nghĩa là bạn chưa ký public key bằng private key của bạn ). Không có cách nào dễ dàng đảm bảo hoàn toàn rằng public key này thuộc về chủ sở hữu, khóa này không hoàn toàn tin cậy .

Tuy nhiên, trong trường hợp này, Chữ ký tốt cho biết rằng file này thực sự là file mà tác giả của OpenResty dự định phân phối, vì vậy ta có thể tiếp tục cài đặt.

Tiếp theo, extract file đã download và chuyển vào folder mới tạo.

  • tar -xvf openresty-1.11.2.2.tar.gz
  • cd openresty-1.11.2.2

Ta cần cài đặt các công cụ cần thiết để biên dịch OpenResty. Để biết thêm thông tin về biên dịch chương trình từ nguồn, hãy xem hướng dẫn này về cách sử dụng make để cài đặt các gói từ nguồn .

  • sudo apt-get install build-essential

Ta cũng cần cài đặt một số gói khác:

  • readline : Điều này sẽ được OpenResty sử dụng cho giao diện dòng lệnh.
  • ncurses : Đây là một phần mềm khác sẽ được OpenResty sử dụng cho giao diện dòng lệnh của nó.
  • PCRE : Phần mềm này sẽ cung cấp cho OpenResty với khả năng biểu thức chính quy.
  • OpenSSL : OpenSSL được sử dụng cho giao tiếp an toàn, chẳng hạn như TLS (HTTPS).
  • Perl : Perl là một ngôn ngữ lập trình được dùng trong OpenResty.

Để cài đặt các gói này, hãy thực hiện lệnh sau:

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

Bây giờ ta có tất cả các thành phần cần thiết để xây dựng và cài đặt OpenResty.

Bước 2 - Cài đặt OpenResty

Ta sẽ cấu hình OpenResty với biểu thức chính quy PCRE và hỗ trợ IPv6. Ta cũng sẽ parallelize phần của quá trình xây dựng bằng cách cung cấp các -j2 cờ, mà sẽ cho make rằng 2 công việc có thể chạy cùng một lúc. Lệnh này chủ yếu sẽ kiểm tra xem tất cả các phụ thuộc có sẵn trên hệ thống của bạn hay không và thu thập thông tin sẽ được sử dụng cho bước xây dựng sau này. Nó cũng sẽ xây dựng một số phụ thuộc, chẳng hạn như LuaJIT.

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

Sau đó, bạn có thể xây dựng OpenResty, bằng cách cung cấp các cờ -j2 cho song song. Điều này sẽ tự biên dịch OpenResty.

  • make -j2

Cuối cùng, bạn có thể cài đặt OpenResty. Sử dụng sudo đảm bảo tất cả các file có thể được sao chép vào đúng vị trí trên hệ thống để OpenResty có thể tìm thấy chúng khi nó đang chạy.

  • sudo make install

Bạn cần cho phép các kết nối HTTP trong firewall của bạn để web server hoạt động.

  • sudo ufw allow http

Bạn cũng có thể tùy chọn cho phép HTTPS với sudo ufw allow https nếu bạn định sử dụng nó. Bạn có thể kiểm tra thay đổi trong firewall bằng cách kiểm tra trạng thái của nó.

  • sudo ufw status

Bạn sẽ thấy truy cập HTTP (cổng 80 ) được phép trong kết quả được hiển thị, cũng như HTTPS (cổng 443 ) nếu bạn đã thêm nó.

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)

Đến đây bạn có thể kiểm tra xem cài đặt đã hoạt động chưa. Đầu tiên, khởi động OpenResty.

  • sudo /usr/local/openresty/bin/openresty

Nó sẽ hoàn thành ngay lập tức mà không cần xuất văn bản nếu lệnh thành công. Trong trường hợp đó, bạn có thể truy cập http:// your_server_ip trong trình duyệt của bạn . Bạn sẽ thấy một trang có nội dung Chào mừng đến với OpenResty! với xác nhận nó đã được cài đặt và hoạt động đầy đủ.

Đến đây bạn có thể dừng server OpenResty.

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

OpenResty đã được cài đặt, nhưng bạn vẫn cần cấu hình OpenResty để chạy khi khởi động để server không phải khởi động theo cách thủ công.

Bước 3 - Cài đặt OpenResty như một dịch vụ

Ở đây, ta sẽ cài đặt OpenResty như một dịch vụ để nó tự động khởi động khi server khởi động . Ta sẽ thực hiện việc này bằng cách sử dụng dịch vụ systemd init. Bạn có thể đọc hướng dẫn cơ bản về systemd này để biết thêm thông tin và hướng dẫn file đơn vị này để biết thông tin cụ thể về file đơn vị.

Bắt đầu bằng cách tạo file systemd mới bằng nano hoặc editor yêu thích của bạn.

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

Đối với hướng dẫn này, ta sẽ sao chép file Nginx systemd mặc định từ một bản cài đặt mới và sửa đổi nó cho OpenResty. Tệp hoàn chỉnh trông như thế này và phải được paste vào file ta vừa mở. Ta sẽ đi qua từng phần của file để giải thích những gì nó đang làm.

/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 

Trong Phần [Unit] :

  • After=network.target làm cho OpenResty khởi động sau khi mạng được khởi động để OpenResty có thể liên kết và lắng nghe các cổng. Điều này cho phép nó được tiếp cận từ bên ngoài.

Trong phần [Service] :

  • Type=forking cho systemd biết rằng tiến trình mà ta gọi trong ExecStart sẽ khởi động dịch vụ ở chế độ nền và tiến trình sẽ tự dừng lại sau khi hoàn tất.

  • PIDFile=/run/openresty.pid cho systemd biết nơi tìm file PID mà OpenResty tạo ra khi nó được khởi động. Điều này cho phép systemd biết liệu OpenResty vẫn đang chạy.

  • ExecStartPre=/usr/local/openresty/bin/openresty -t -q -g 'daemon on; master_process on;' gọi tập lệnh OpenResty mà không cần khởi động nó. Cờ -t cho OpenResty biết rằng ta chỉ muốn nó kiểm tra file cấu hình; cờ -q cho nó biết rằng ta muốn loại bỏ bất kỳ kết quả không lỗi nào; cờ -g đặt daemon on; master_process on chỉ thị toàn cục daemon on; master_process on đó nói với OpenResty rằng ta muốn nó khởi động ở chế độ nền dưới dạng daemon. Ta thực thi tập lệnh này dưới dạng ExecStartPre để systemd sẽ không thử khởi động OpenResty khi file cấu hình không hợp lệ, vì nó sẽ xảy ra lỗi với lệnh này.

  • ExecStart=/usr/local/openresty/bin/openresty -g 'daemon on; master_process on;' thực sự bắt đầu OpenReesty. Điều này giống với ExecStartPre không có cờ -t .

  • ExecReload=/usr/local/openresty/bin/openresty -g 'daemon on; master_process on;' -s reload cho systemd biết để chạy lệnh này khi ta chạy systemctl reload openresty . Cờ -s yêu cầu OpenResty reload file cấu hình của nó.

  • ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/openresty.pid cho systemd biết để chạy lệnh này khi OpenResty bị dừng. Nó đưa SIGSTOP vào quy trình được liệt kê trong file PID. Nếu nó vẫn chạy 5 giây sau đó, systemd sẽ kiểm soát thông qua hai tùy chọn sau.

  • TimeoutStopSec=5 cho systemd biết rằng ta muốn quá trình dừng lại sau 5 giây. Nếu nó không dừng lại, systemd sẽ buộc dừng OpenRest.

  • KillMode=mixed chỉ định cách systemd thử dừng OpenResty khi nó chưa dừng sau 5 giây.

Trong phần [Install] :

  • WantedBy=multi-user.target cho systemd biết khi nào ta muốn khởi động dịch vụ nếu nó được cấu hình để khởi động khi server khởi động . multi-user.target nghĩa là dịch vụ sẽ chỉ được khởi động khi hệ thống nhiều user đã được khởi động, tức là ta có thể chạy OpenResty với quyền là một user khác.

Đó là tất cả đối với file etc/systemd/system/openresty.service . Tiếp theo, ta cần tùy chỉnh file cấu hình OpenResty Nginx và kích hoạt dịch vụ.

Mở file cấu hình trước.

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

Theo mặc định, nó sẽ giống như sau:

Mặc định /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; }  . . . 

Xóa mọi thứ trước dòng events { và thay thế nó bằng ba dòng sau:

Cập nhật /usr/local/openresty/nginx/conf/nginx.conf
user www-data; worker_processes  auto; pid /run/openresty.pid;  events {     worker_connections  1024; }  . . . 

Tệp này sẽ đảm bảo ta đang chạy với quyền là user www-datasystemd có thể nhận ra khi nào OpenResty đang chạy do dòng pid sẽ được tạo bởi OpenResty khi nó khởi động.

Lưu và đóng file .

Tiếp theo, tạo folder log .

  • sudo mkdir /var/log/openresty

Reload dịch vụ systemd để nó có thể tìm thấy file của ta .

  • sudo systemctl daemon-reload

Bây giờ, hãy khởi động OpenResty qua systemd .

  • sudo systemctl start openresty

Đến đây bạn có thể truy cập lại http:// your_server_ip và xem trang web giống như trước đây. Sự khác biệt là bây giờ, quá trình đã được bắt đầu bởi systemd .

Bước cuối cùng là kích hoạt dịch vụ đảm bảo rằng OpenResty được khởi động khi server khởi động .

  • sudo systemctl enable openresty

Bạn có thể tìm hiểu thêm về cách quản lý các dịch vụ và đơn vị systemd trong hướng dẫn dịch vụ và đơn vị của ta .

Bây giờ ta đã cấu hình dịch vụ, ta có thể cấu hình thêm OpenResty để nó sẽ đăng nhập vào một vị trí chung.

Bước 4 - Cấu hình OpenResty

Để cấu hình OpenResty, ta đã sử dụng cấu hình Nginx mặc định làm tham chiếu, vì vậy nó hầu như sẽ trùng với những gì bạn có thể quen thuộc.

Đầu tiên, hãy mở lại file cấu hình OpenResty:

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

Lần này, ta sẽ sửa đổi khối http và di chuyển khối server bên trong khối http này sang một file mới để có cấu trúc tốt hơn. Đầu tiên, tìm dòng http { và xóa mọi thứ sau nó, ngoại trừ dòng cuối cùng có dấu } tương ứng.

/Usr/local/openresty/nginx/conf/nginx.conf hiện tại
user www-data; worker_processes  auto; pid /run/openresty.pid;  events {     worker_connections  1024; }  http {     include       mime.types;     default_type  application/octet-stream;      . . . } 

Sau đó, sao chép phần sau vào khối http để toàn bộ file của bạn trông giống như thế này. Ta sẽ xem xét từng thay đổi một.

/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/*; } 

Lưu và đóng file .

Những thay đổi ta đã thực hiện đối với file mặc định là:

  • Đang bỏ chú tcp_nopush on; , điều này yêu cầu OpenResty chỉ gửi các gói đầy đủ. Tùy chọn này hữu ích khi sử dụng tùy chọn sendfile , sẽ cho phép OpenResty tối ưu hóa việc gửi các file tĩnh đến client .

  • Thêm tcp_nodelay on; . Tùy chọn này sẽ thử gửi các gói càng sớm càng tốt, điều này có vẻ trái ngược với tùy chọn trên, nhưng nó được sử dụng vào một thời điểm khác. tcp_nodelay chỉ được sử dụng khi sử dụng tùy chọn keepalive trên các yêu cầu HTTP, đây là một kết nối với web server của trình duyệt web để tránh phải khởi tạo kết nối HTTP mỗi khi yêu cầu được thực hiện.

  • Thêm và sửa đổi các dòng ssl_protocolsssl_prefer_server_ciphers . Các tùy chọn này cấu hình các tùy chọn SSL của OpenResty. Ta đã xóa các giao thức cũ dễ bị tấn công HTTPS, chẳng hạn như cuộc tấn công POODLE.

  • Thêm các dòng access_logerror_log , cấu hình nơi ghi log của web server . Ta lưu trữ log tại folder /var/log/openresty , ta đã tạo ở bước trước.

  • Bỏ chú thích gzip on và thêm gzip_disable "msie6" . Các tùy chọn này sẽ cấu hình GZIP, GZIP sẽ nén các trang web để có ít dữ liệu hơn để truyền. Ta cũng thêm tùy chọn cuối cùng vì Internet Explorer 6 (trở lên) không phải lúc nào cũng xử lý nội dung GZIP đúng cách.

  • Thêm include ../sites/*; , thông báo cho OpenResty tìm kiếm các file cấu hình bổ sung trong folder /usr/local/openresty/nginx/sites mà ta sẽ tạo trong giây lát.

  • Xóa tất cả các khối server mà ta sẽ chuyển đến file mới sau trong bước này.

Tiếp theo, tạo folder sites mới mà ta đã chỉ định trong dòng include .

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

Tạo trang web default .

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

Thêm phần sau vào file mới này. Đây là việc di dời khối server ban đầu từ nginx.conf , nhưng có các comment nội tuyến để biết thêm chi tiết.

/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;     } } 

Lưu và đóng file .

Bây giờ, hãy tạo một folder mới cho trang web này.

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

Sau đó, di chuyển index.html ban đầu từ vị trí ban đầu của nó sang folder mới.

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

Cuối cùng, khởi động lại OpenResty để sử dụng trang web mới này.

  • sudo systemctl restart openresty

Như vậy, bạn có thể truy cập lại http:// your_server_ip và xem cùng một trang web như trước đây.

Bây giờ OpenResty đã được cấu hình đầy đủ, ta có thể thử một số tính năng được OpenResty giới thiệu mà không có sẵn trong Nginx theo mặc định.

Bước 5 - Sử dụng Mô-đun Lua OpenResty

Trong phần này, ta sẽ xem xét sự kết hợp của các module khác nhau được OpenResty thêm vào, tất cả đều tồn tại để phù hợp với kịch bản Lua. Ta sẽ sửa đổi /usr/local/openresty/nginx/sites/default.conf trong suốt bước này, vì vậy hãy mở nó trước.

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

Đầu tiên, ta sẽ xem xét tùy chọn cấu hình content_by_lua_block . Sao chép khối location từ cấu hình ví dụ bên dưới và thêm nó vào khối server , bên dưới hai khối location hiện có.

/usr/local/openresty/nginx/sites/default.conf content_by_lua_block ví dụ
server {     . . .      location /example {          default_type 'text/plain';           content_by_lua_block {              ngx.say('Hello, Sammy!')          }     } } 

Lưu file , sau đó reload cấu hình.

  • sudo systemctl reload openresty

Nếu bạn truy cập http:// your_server_ip /example ngay bây giờ, bạn sẽ thấy một trang có nội dung Xin chào, Sammy! . Hãy giải thích cách hoạt động của điều này.

Chỉ thị cấu hình content_by_lua_block thực thi mọi thứ bên trong nó dưới dạng mã Lua. Ở đây, ta đã sử dụng hàm Lua ngx.say để in thông báo Hello, Sammy! vào trang.

Ví dụ khác, hãy thay thế nội dung của khối location /example bằng cái này:

/usr/local/openresty/nginx/sites/default.conf content_by_lua_file ví dụ
server {     . . .      location /example {          default_type 'text/plain';           content_by_lua_file /usr/local/openresty/nginx/html/default/index.lua;     } } 

content_by_lua_file tải nội dung Lua từ một file bên ngoài, vì vậy hãy tạo một file mà ta đã chỉ định ở trên: /usr/local/openresty/nginx/html/default/index.lua .

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

Thêm phần sau vào file , sau đó lưu và đóng nó.

/usr/local/openresty/nginx/html/default/index.lua
local name = ngx.var.arg_name or "Anonymous" ngx.say("Hello, ", name, "!") 

Đây là một đoạn Lua đơn giản, đọc một tham số truy vấn trong URL, name và tùy chỉnh thông điệp chào mừng. Nếu không có tham số nào được chuyển, nó sẽ sử dụng "Ẩn danh".

Reload cấu hình .

  • sudo systemctl reload openresty

Bây giờ, hãy truy cập http:// your_server_ip /example?name= Sammy trong trình duyệt của bạn. Điều này sẽ hiển thị Xin chào, Sammy! . Bạn có thể thay đổi tham số truy vấn name hoặc bỏ qua hoàn toàn.

Hello, Sammy! 

Bạn cũng có thể thay đổi tham số truy vấn name để hiển thị bất kỳ tên nào khác.

Cảnh báo: Không đặt file Lua bạn đang tải ở vị trí có thể truy cập được từ web. Nếu bạn làm như vậy, mã ứng dụng của bạn có thể được bao gồm nếu ai đó truy cập file này. Đặt file bên ngoài root tài liệu của bạn, chẳng hạn bằng cách thay đổi root tài liệu thành /usr/local/openresty/nginx/html/default/public và đặt các file Lua một folder phía trên nó.

Kết luận

Trong bài viết này, bạn cài đặt OpenResty, nó sẽ cho phép bạn sử dụng các tập lệnh Lua trong Nginx worker. Có thể tạo các tập lệnh Lua phức tạp hơn nhiều. Ví dụ: bạn cũng có thể hạn chế quyền truy cập bằng cách sử dụng tập lệnh Lua hoặc viết lại các yêu cầu nhất định bằng Lua. Bạn có thể tìm thấy tài liệu trên trang GitHub của lua-nginx-module . Thậm chí có những khuôn khổ web hoàn chỉnh sử dụng Lua trên OpenResty, chẳng hạn như Lapis .

Nếu bạn muốn tìm hiểu thêm, bạn có thể truy cập trang web OpenResty . Vì OpenResty chỉ là một cài đặt Nginx mở rộng, bạn cũng có thể tìm hiểu cách cài đặt khối server trong hướng dẫn khối server Nginx , nhưng hãy đảm bảo thay thế các đường dẫn được sử dụng trong hướng dẫn đó bằng các đường dẫn được sử dụng trong hướng dẫn này.


Tags:

Các tin liên quan

Roundup: Thư viện thành phần ứng dụng web trên máy tính để bàn Vue.js - Cập nhật Q4 2017
2017-02-23
Cách cài đặt Django Web Framework trên Debian 8
2016-12-21
Cách triển khai ứng dụng web Falcon với Gunicorn và Nginx trên Ubuntu 16.04
2016-11-16
Giới thiệu về Ứng dụng web tiến bộ (PWA): Service Worker & Manifest
2016-11-10
Cách cài đặt Django Web Framework trên Ubuntu 16.04
2016-05-16
Cách triển khai ứng dụng web Clojure trên FreeBSD 10.2
2015-12-22
Cách triển khai ứng dụng web Clojure trên Ubuntu 14.04
2015-11-20
Cách thiết lập web server khả dụng cao với IP giữ và nổi trên Ubuntu 14.04
2015-10-20
Xây dựng cho Sản xuất: Ứng dụng Web - Tổng quan
2015-06-01
Xây dựng cho Sản xuất: Ứng dụng Web - Giám sát
2015-06-01