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.

Dynamic Modules
Các mô-đun động cắm vào NGINX Plus để cung cấp chức năng bổ sung.


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ục objs/.

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

Module
Chức Năng

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ó.

Tài liệu tham khảo:
https://docs.nginx.com/nginx/admin-guide/dynamic-modules/dynamic-modules/

Last updated

Was this helpful?