NGINX: Hướng dẫn Cài đặt và Sử dụng Module njs
Module njs là một công cụ mạnh mẽ giúp bạn mở rộng khả năng của NGINX bằng cách viết kịch bản tùy chỉnh sử dụng JavaScript. Dưới đây là hướng dẫn chi tiết từng bước để cài đặt, viết mã, và triển khai module njs.
1. Cài đặt Module njs
1.1. Cài đặt njs trên các hệ điều hành phổ biến
Tùy vào hệ điều hành, bạn có thể cài đặt module ngx_http_js_module
và ngx_stream_js_module
như sau:
Ubuntu/Debian:
sudo apt-get install nginx-module-njs
CentOS/Red Hat:
sudo yum install nginx-plus-module-njs
Alpine Linux:
apk add nginx-plus-module-njs
1.2. Kích hoạt module trong tệp cấu hình nginx.conf
Sau khi cài đặt, bạn cần khai báo và tải module njs trong cấu hình NGINX:
load_module modules/ngx_http_js_module.so;
load_module modules/ngx_stream_js_module.so;
Kiểm tra cấu hình và khởi động lại NGINX:
nginx -t && nginx -s reload
2. Viết Mã JavaScript với njs
2.1. Tạo một tệp JavaScript
Tạo tệp app.js
chứa logic xử lý:
function hello(r) {
r.return(200, "Hello, welcome to NGINX with njs!\n");
}
export default { hello };
2.2. Cấu hình NGINX để sử dụng mã njs
Thêm cấu hình vào tệp nginx.conf
:
load_module modules/ngx_http_js_module.so;
events {}
http {
js_import app.js;
server {
listen 8080;
location / {
js_content app.hello;
}
}
}
Cấu hình này:
Tải module njs.
Nhập tệp
app.js
(được đặt trong cùng thư mục với cấu hình NGINX).Gọi hàm
hello
khi có yêu cầu đến đường dẫn gốc/
.
Khởi động lại NGINX:
nginx -t && nginx -s reload
3. Kiểm tra Kết quả
Mở trình duyệt hoặc sử dụng lệnh curl
để kiểm tra:
curl http://localhost:8080
Kết quả sẽ hiển thị:
Hello, welcome to NGINX with njs!
4. Tính Năng Mở Rộng với njs
4.1. Thao tác tiêu đề yêu cầu và phản hồi
Thêm logic trong tệp app.js
:
function handleHeaders(r) {
r.headersOut['Custom-Header'] = 'njs is awesome!';
r.return(200, "Headers modified successfully!");
}
export default { handleHeaders };
Cập nhật cấu hình NGINX:
server {
listen 8080;
location /headers {
js_content app.handleHeaders;
}
}
Truy cập http://localhost:8080/headers
để xem tiêu đề phản hồi được sửa đổi.
4.2. Xử lý yêu cầu phức tạp
Ví dụ: Kiểm tra token xác thực:
function authCheck(r) {
const token = r.headersIn['Authorization'];
if (token === 'Bearer mysecrettoken') {
r.return(200, "Authorized\n");
} else {
r.return(403, "Forbidden\n");
}
}
export default { authCheck };
Cập nhật cấu hình:
server {
listen 8080;
location /auth {
js_content app.authCheck;
}
}
Kiểm tra với lệnh curl
:
curl -H "Authorization: Bearer mysecrettoken" http://localhost:8080/auth
5. Lợi ích và Ứng dụng của njs
Tùy chỉnh linh hoạt: Xử lý logic phía máy chủ mà không cần thay đổi ứng dụng backend.
Hiệu năng cao: njs được tích hợp trực tiếp vào NGINX, đảm bảo tốc độ và hiệu suất.
Tương thích tốt: Dễ dàng mở rộng và tích hợp với các ứng dụng hiện có.
6. Kết Luận
Module njs là công cụ mạnh mẽ giúp NGINX trở nên linh hoạt hơn trong xử lý HTTP và Stream. Từ việc xử lý yêu cầu đơn giản đến tạo logic phức tạp, njs mở ra nhiều cơ hội mới cho các nhà phát triển.
Hãy bắt đầu triển khai njs để tận dụng hết tiềm năng của NGINX! 🎉
njs Scripting Language - https://docs.nginx.com/nginx/admin-guide/dynamic-modules/nginscript/
Tài liệu về mô-đun JavaScript của NGINX - https://nginx.org/en/docs/njs/
Hướng dẫn cài đặt njs - https://nginx.org/en/docs/njs/install.html
Tham khảo cú pháp và API của njs - https://nginx.org/en/docs/njs/reference.html
NGINX JavaScript examples - https://github.com/nginx/njs-examples
Last updated
Was this helpful?