Cách tích hợp module bên ngoài vào Nginx bằng biên dịch lại nhị phân

Việc mở rộng chức năng Nginx không yêu cầu sửa đổi mã nguồn lõi — thay vào đó, hệ thống hỗ trợ tích hợp module thông qua cơ chế biên dịch lại. Đây là phương pháp tiêu chuẩn để bổ sung các tính năng như kiểm soát bộ nhớ đệm nâng cao, ghi log tùy chỉnh, hay xử lý yêu cầu động mà Nginx gốc không cung cấp sẵn.

Nginx từ phiên bản 1.9.11 trở lên đã hỗ trợ load_module cho một số module (ví dụ: ngx_http_perl_module), nhưng đa phần các module phổ biến như echo-nginx-module, ngx_cache_purge, hay headers-more-nginx-module vẫn yêu cầu biên dịch tĩnh với binary chính.

Quy trình tích hợp module mới

Bước 1: Xác minh cấu hình hiện tại
Chạy lệnh sau để lấy lại toàn bộ tham số ./configure đã dùng khi cài đặt:

/opt/data/nginx/sbin/nginx -V 2>&1 | grep "configure arguments"

Kết quả sẽ tương tự:

configure arguments: --prefix=/opt/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream

Bước 2: Chuẩn bị module
Tải và giải nén module cần tích hợp. Ví dụ với echo-nginx-module:

wget https://github.com/openresty/echo-nginx-module/archive/refs/tags/v0.62.tar.gz<br>tar -xzf v0.62.tar.gz<br>mv echo-nginx-module-0.62 /usr/local/src/echo-module

Bước 3: Biên dịch lại Nginx
Truy cập thư mục nguồn Nginx (ví dụ: nginx-1.17.0) và chạy lệnh cấu hình lại — phải bao gồm đầy đủ tất cả các option cũ, thêm vào đó là tùy chọn --add-module:

./configure \<br>  --prefix=/opt/data/nginx \<br>  --with-http_stub_status_module \<br>  --with-http_ssl_module \<br>  --with-stream \<br>  --add-module=/usr/local/src/echo-module<br>make

Lưu ý quan trọng: Không thực thi make install, vì điều này sẽ ghi đè toàn bộ cài đặt hiện hành (bao gồm cấu hình, chứng chỉ SSL, script khởi động…). Chỉ cần giữ lại file nhị phân mới ở objs/nginx.

Bước 4: Thay thế binary và tải lại dịch vụ

systemctl stop nginx<br>cp objs/nginx /opt/data/nginx/sbin/nginx<br>chmod +x /opt/data/nginx/sbin/nginx<br>systemctl start nginx<br>nginx -t && nginx -s reload

Sau khi hoàn tất, kiểm tra lại cấu hình để xác nhận module đã được kích hoạt:

nginx -V 2>&1 | grep "echo\|add-module"

Kết quả mong đợi sẽ chứa dòng tương tự:

--add-module=/usr/local/src/echo-module

Với module echo, bạn có thể kiểm thử bằng đoạn cấu hình đơn giản trong server block:

location /test-echo {<br>    echo "Hello from dynamic module!";<br>    echo_flush;<br>}

Truy cập http://localhost/test-echo để xác minh phản hồi.

Một số module khác thường được tích hợp theo cách tương tự bao gồm lua-nginx-module (cho logic phía máy chủ), nginx-module-vts (giám sát thời gian thực), và modsecurity-nginx (bảo mật WAF).

Thẻ: nginx echo-nginx-module nginx-module nginx-compilation web-server

Đăng vào ngày 16 tháng 6 lúc 03:05