Nginx, một máy chủ Web hiệu suất cao và là proxy ngược, đóng vai trò quan trọng trong kiến trúc Web hiện đại. Dù hầu hết các bản phân phối Linux cung cấp gói Nginx đã biên dịch sẵn, việc xây dựng từ mã nguồn mang lại sự linh hoạt và khả năng tối ưu hóa tốt hơn. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng lệnh configure để xây dựng Nginx từ mã nguồn và giải thích ý nghĩa của các tham số cấu hình.
Tại sao nên xây dựng Nginx từ mã nguồn?
- Mô-đun tùy chỉnh: Chỉ bao gồm các mô-đun cần thiết để giảm kích thước tệp nhị phân.
- Tính năng mới nhất: Lấy các tính năng và sửa lỗi mới nhất từ kho lưu trữ chính thức.
- Tối ưu hóa hiệu suất: Tối ưu cho phần cứng và trường hợp sử dụng cụ thể.
- Yêu cầu đặc biệt: Thêm các mô-đun bên thứ ba hoặc tùy chỉnh sâu hơn.
Tải xuống mã nguồn Nginx
Sử dụng wget để tải phiên bản ổn định mới nhất của Nginx:
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
Phân tích các tham số cấu hình cơ bản
Các tham số cấu hình đường dẫn:
./configure \
--prefix=/opt/webserver/nginx \
--sbin-path=/usr/local/bin/nginxbinary \
--conf-path=/etc/nginxcfg/nginx.conf \
--pid-path=/var/run/nginxd.pid \
--error-log-path=/var/log/nginxd/error.log \
--http-log-path=/var/log/nginxd/access.log
--prefix: Định nghĩa thư mục gốc của Nginx.--sbin-path: Đặt đường dẫn file thực thi.--conf-path: Vị trí file cấu hình chính.
Cấu hình liên quan đến bảo mật
Đặt người dùng và nhóm chạy:
./configure \
--user=webuser \
--group=webgrp
Mô-đun HTTP
Kích hoạt các mô-đun HTTP phổ biến:
./configure \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module
Vô hiệu hóa các mô-đun không cần thiết:
./configure \
--without-http_autoindex_module \
--without-http_ssi_module
Các phụ thuộc thư viện bên ngoài
Cài đặt thư viện PCRE:
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
tar -zxvf pcre-8.45.tar.gz
./configure --with-pcre=../pcre-8.45
Cài đặt OpenSSL:
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar -zxvf openssl-1.1.1t.tar.gz
./configure --with-openssl=../openssl-1.1.1t
Tham số tối ưu hóa hiệu suất
Tuỳ chọn biên dịch tối ưu hóa:
./configure \
--with-cc-opt="-O3 -march=native -pipe" \
--with-ld-opt="-Wl,-O2,--as-needed"
Tối ưu xử lý kết nối:
./configure \
--with-threads \
--with-file-aio \
--without-select_module \
--without-poll_module
Ví dụ cấu hình môi trường sản xuất
Cấu hình hoàn chỉnh cho môi trường sản xuất:
./configure \
--prefix=/opt/webserver/nginx \
--sbin-path=/usr/local/bin/nginxbinary \
--conf-path=/etc/nginxcfg/nginx.conf \
--pid-path=/var/run/nginxd.pid \
--error-log-path=/var/log/nginxd/error.log \
--http-log-path=/var/log/nginxd/access.log \
--user=webuser \
--group=webgrp \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-pcre=../pcre-8.45 \
--with-openssl=../openssl-1.1.1t
Cài đặt và xác minh
Thực hiện cài đặt sau khi biên dịch:
make -j$(nproc)
sudo make install
Xác minh cài đặt:
nginxbinary -t # Kiểm tra cấu hình
nginxbinary -V # Xem tham số biên dịch
Quản lý dịch vụ hệ thống
Tạo dịch vụ systemd:
sudo systemctl enable nginxd
sudo systemctl start nginxd