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-streamBướ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-moduleBướ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>makeLư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 reloadSau 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-moduleVớ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).