NGINX là một web server mã nguồn mở, miễn phí và phổ biến. Các cấu hình NGINX mặc định đủ tốt để web server hoạt động.
Tuy nhiên, nếu muốn sử dụng NGINX một cách tối đa, bạn cần mày mò với các file cấu hình của nó và thiết lập những tham số sẽ tối ưu hóa hiệu suất của máy chủ. Bạn sẽ tìm thấy các file cấu hình trong thư mục /etc/nginx trên máy Linux.
1. Cấu hình các worker process trong NGINX
Kiến trúc NGINX bao gồm một master process và một số worker process. Công việc của master process là đánh giá cấu hình và quản lý worker. Mặt khác, vai trò của worker process là xử lý các yêu cầu đến và tạo kết nối giữa cclient và server.
Giá trị tiến trình được đặt thành auto theo mặc định. Điều này đặt số lượng worker process bằng với số lượng lõi CPU có sẵn. Để biết có bao nhiêu lõi CPU trong hệ thống của bạn, hãy chạy lệnh sau:
grep processor /proc/cpuinfo | wc -l
Nếu muốn tăng số lượng worker process, bạn cần thực hiện điều này trong file cấu hình NGINX.
Mở file bằng nano:
nano etc/nginx/nginx.conf
Để cấu hình nhiều worker process hơn, hãy thay đổi giá trị mặc định thành số lõi CPU khả dụng tối đa trong hệ thống của bạn.
2. Cấu hình worker connections
Một tham số khác mà bạn có thể sửa đổi để nâng cao hiệu suất của NGINX là worker connections. Đây là số lượng kết nối TCP tối đa mà mỗi worker process có thể xử lý đồng thời.
Hầu hết các hệ thống có giá trị mặc định là 512 kết nối, nhưng nhiều hệ thống hiện đại cũng hỗ trợ số lượng lớn hơn. Bạn có thể kiểm tra xem hệ thống của mình hỗ trợ bao nhiêu kết nối bằng:
ulimit -n
Đầu ra sẽ là số lượng kết nối tối đa được hỗ trợ. Sau đó, bạn có thể sửa đổi biến worker_connections trong file cấu hình NGINX để cải thiện hiệu suất.
3. Cho phép nén GZIP trong NGINX
NGINX sử dụng GZIP để nén và giải nén file. Nếu được kích hoạt trong file cấu hình NGINX, bạn có thể tiết kiệm băng thông và tăng thời gian load của trang web khi kết nối chậm.
Để cho phép nén GZIP, hãy thêm các dòng sau vào file cấu hình NGINX:
server {
gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6]\.";
}
4. Giới hạn giá trị timeout trong NGINX
Các giá trị timeout giảm cũng đóng một vai trò quan trọng trong việc nâng cao hiệu suất NGINX. Các kết nối cố định làm giảm chi phí hoạt động của bộ xử lý và mạng khi mở và đóng những kết nối.
Bạn có thể sửa đổi các tham số sau trong file cấu hình để giới hạn timeout:
http
{
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
}
5. Điều chỉnh kích thước buffer
Bạn cũng có thể điều chỉnh buffer NGINX để tối ưu hóa hiệu suất của máy chủ. Nếu kích thước buffer quá thấp, thì NGINX sẽ ghi vào một file tạm thời khiến các hoạt động I/O lớn chạy liên tục.
Bạn cần thiết lập các tham số buffer sau để NGINX hoạt động tốt nhất:
http
{
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;
}
6. Tắt nhật ký truy cập hoặc bật tính năng ghi bộ đệm nhật ký truy cập
Nhật ký tiêu tốn một lượng lớn dung lượng ổ đĩa và chu kỳ CPU/IO có thể ảnh hưởng đến hiệu suất của máy chủ nếu nó ghi lại mọi yêu cầu.
Bạn có thể vô hiệu hóa nhật ký truy cập, điều này sẽ tiết kiệm một số dung lượng ổ đĩa và xử lý CPU. Để tắt nhật ký truy cập, hãy thêm dòng sau vào file cấu hình NGINX:
access_log off;
Nhật ký rất quan trọng vì chúng giúp khắc phục sự cố. Vô hiệu hóa hoàn toàn các bản ghi không phải là một điều tốt. Trong trường hợp này, bạn có thể bật tính năng ghi bộ đệm nhật ký truy cập. Điều này sẽ cho phép NGINX ghi bộ đệm một loạt nhật ký và đưa chúng vào file nhật ký cùng một lúc, thay vì áp dụng các thao tác nhật ký khác nhau cho mỗi yêu cầu.
Thêm dòng sau vào file cấu hình NGINX để cho phép ghi bộ đệm nhật ký truy cập:
access_log /var/log/nginx/access.log main buffer=16k
7. Điều chỉnh thời gian lưu cache nội dung tĩnh trong NGINX
Nội dung trên website không thay đổi trên các trang được gọi là nội dung tĩnh. Lưu cache của nội dung này cho phép nó được đặt ở những vị trí dễ truy cập. Cơ chế này làm giảm mức sử dụng băng thông, cho phép truy cập nhanh và sau đó cải thiện hiệu suất của website.
Khi khách hàng yêu cầu nội dung tĩnh, máy chủ sẽ cung cấp phiên bản nội dung được lưu trong bộ nhớ cache. Thêm các dòng sau vào file host ảo được đặt trong thư mục /etc/nginx/sites-available:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 90d;
}
Cấu hình này sẽ lưu cache các file trong 90 ngày kể từ lần truy cập trình duyệt cuối cùng.
8. Bật Open File Cache trong NGINX
Bạn cũng có thể sử dụng các tham số Open File Cache trong file cấu hình NGINX để nâng cao hiệu suất của nó. Chỉ thị này cho phép bộ mô tả file và các file được truy cập thường xuyên được lưu vào cache máy chủ.
Thêm các dòng sau vào phần http trong file cấu hình để bật Open File Cache:
http {
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
Một phương pháp hay để tuân theo khi thay đổi cấu hình là xử lý từng cài đặt một và kiểm tra cài đặt đó. Nếu nó hoạt động, hãy chuyển sang cài đặt tiếp theo. Nếu không, bạn luôn có thể thay đổi cấu hình về giá trị mặc định.
Bằng cách sửa đổi các tham số được cấu hình trong những file cấu hình NGINX, chẳng hạn như nginx.conf và các file host ảo, bạn có thể hack NGINX để mang lại hiệu suất tốt nhất.