NGINX: Hướng Dẫn Sử Dụng Dynamic Modules
Dynamic Modules cho phép bạn thêm các module vào NGINX mà không cần phải biên dịch lại toàn bộ phần mềm. Tính năng này giúp NGINX linh hoạt hơn, dễ dàng mở rộng với các chức năng bổ sung chỉ khi cần thiết.

1. Dynamic Modules Là Gì?
Dynamic Modules là các module được tải vào lúc runtime thay vì tích hợp sẵn vào NGINX khi biên dịch. Điều này mang lại các lợi ích:
Dễ dàng thêm/bớt module: Chỉ cần chỉnh sửa cấu hình, không cần biên dịch lại NGINX.
Giảm tải: Tải các module cần thiết để tối ưu hóa tài nguyên.
2. Kiểm Tra Dynamic Modules
Để kiểm tra phiên bản NGINX hiện tại có hỗ trợ dynamic modules hay không, sử dụng lệnh:
nginx -V
Tìm các module có dạng --with-compat
hoặc các module có hỗ trợ dynamic
. Ví dụ:
--with-compat --add-dynamic-module=/path/to/module
3. Cách Tải Module Động
Dynamic Modules thường có phần mở rộng .so
. Bạn có thể tải module trong cấu hình NGINX bằng cách sử dụng chỉ thị load_module
.
Cấu Hình Mẫu
Thêm module vào file nginx.conf
hoặc file cấu hình tùy chỉnh:
load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;
Xác Minh
Sau khi chỉnh sửa, kiểm tra cấu hình:
nginx -t
Khởi động lại NGINX:
sudo systemctl reload nginx
4. Các Bước Cài Đặt Module Động
4.1. Lấy Module Dynamic
Dùng Module Có Sẵn:
Các bản phân phối NGINX chính thức (hoặc NGINX Plus) thường bao gồm các module động sẵn.
Kiểm tra thư mục
/etc/nginx/modules/
hoặc/usr/share/nginx/modules/
để tìm file.so
.
Biên Dịch Module Riêng: Nếu module bạn cần không có sẵn, bạn cần biên dịch nó:
wget http://nginx.org/download/nginx-<version>.tar.gz tar -xzvf nginx-<version>.tar.gz cd nginx-<version> ./configure --with-compat --add-dynamic-module=/path/to/your/module make modules
File
.so
sẽ được tạo trong thư mụcobjs/
.
4.2. Cài Đặt Module
Sao chép file
.so
vào thư mục module NGINX:sudo cp objs/ngx_http_geoip_module.so /etc/nginx/modules/
4.3. Tải Module Vào NGINX
Chỉnh sửa file cấu hình nginx.conf
:
load_module modules/ngx_http_geoip_module.so;
http {
geoip_country /path/to/GeoIP.dat;
}
5. Danh Sách Một Số Module Dynamic Phổ Biến
ngx_http_geoip_module
Phân tích địa chỉ IP để xác định vị trí địa lý.
ngx_http_image_filter_module
Chuyển đổi và tối ưu hình ảnh.
ngx_http_headers_more_module
Thêm, chỉnh sửa, hoặc xóa HTTP headers.
ngx_http_lua_module
Mở rộng NGINX với Lua scripting.
ngx_http_ssl_module
Hỗ trợ HTTPS.
6. Xử Lý Lỗi Khi Tải Module
Lỗi Module Không Tìm Thấy: Kiểm tra đường dẫn module trong chỉ thị
load_module
.Lỗi Phiên Bản Không Tương Thích: Dynamic Modules cần được biên dịch với tùy chọn
--with-compat
để đảm bảo tương thích với NGINX hiện tại.Kiểm Tra Log Lỗi: Log lỗi của NGINX nằm ở
/var/log/nginx/error.log
. Kiểm tra thông báo cụ thể để xử lý.
7. Cấu Hình Mẫu Hoàn Chỉnh
Dưới đây là ví dụ cấu hình hoàn chỉnh với module ngx_http_geoip_module
:
load_module modules/ngx_http_geoip_module.so;
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoIPCity.dat;
server {
listen 80;
location / {
set $geoip_country_code $geoip_country_code;
set $geoip_city $geoip_city;
proxy_set_header X-Geo-Country $geoip_country_code;
proxy_set_header X-Geo-City $geoip_city;
proxy_pass http://backend;
}
}
}
8. Kết Luận
Dynamic Modules là cách hiệu quả để mở rộng NGINX mà không phải biên dịch lại toàn bộ hệ thống. Với các bước trên, bạn có thể dễ dàng tải và sử dụng các module động trong NGINX để thêm các tính năng mạnh mẽ và linh hoạt vào cấu hình hiện có.
https://docs.nginx.com/nginx/admin-guide/dynamic-modules/dynamic-modules/
Last updated
Was this helpful?