Trang chủTin tứcGiải Thích Chi Tiết Về Các File Cấu Hình Trong Nginx
Giải Thích Chi Tiết Về Các File Cấu Hình Trong Nginx

Trước khi tiến hành thao tác cấu hình Nginx, bạn cần hiểu rõ về các file cấu hình cũng như các lưu ý quan trọng khi thực hiện. Tìm hiểu chi tiết sau đây.

Ở bài trước "Hướng dẫn cài đặt và cấu hình Nginx chi tiết" chúng ta đã cùng nhau tìm hiểu tổng quan những khái niệm ban đầu của Nginx. Nhưng để hiểu sâu hơn và vận dụng nó một cách thuần thục không phải là điều dễ dàng. Có thể nói rằng để làm việc hay sử dụng Nginx thì việc đầu tiên ta cần phải làm là nắm bắt và hiểu rõ các file cấu hình của Nginx.

Bài viết này sẽ giải thích rõ cho bạn các file cấu hình của Nginx dùng để làm gì và thực hiện chức năng gì?

1. Cấu trúc các file cấu hình của Nginx

- Tất cả các file cấu hình của Nginx được đặt ở trong thư mục "/etc/nginx".

Mô hình vẽ các file thành phần của Nginx
Mô hình vẽ các file thành phần của Nginx

- nginx.conf: Đây là tệp cấu hình chính cho máy chủ Nginx. Mọi thay đổi trong đây sẽ áp dụng cho toàn bộ mọi thứ liên quan đến Nginx.

- modules-available modules-enabled: ta sẽ hiểu 2 thư mục này như các thư mục chứa các thư viện hỗ trợ cho nginx vậy. Nó định nghĩa các biến trong Nginx dùng để làm gì. Thông thường modules-available không có gì còn modules-enabled sẽ được link đến các thư viện ở "/usr/share/nginx/modules-available".

- sites-available sites-enabled: hai thư mục này sẽ là 2 thư mục chứa các 2 file cấu hình mà ta thêm vào. Đầu ta sẽ thêm file cấu hình mà ta tự cấu hình vào ví dụ như virtual host sites-available sau đó mới tạo ra Symbolic Link đưa vào sites-enabled. Việc làm như vậy để khi ta muốn ngắt tạm thời cấu hình đó ra thì chỉ việc xóa Symbolic Link chứ không cần phải xóa file rồi viết lại từ đầu.

- Một số file khác sẽ có một vài chức năng khác nhau. Bạn có thể từ từ tìm hiểu sau tạm thời như vậy là bạn đã hiểu được cấu trúc của nginx rồi.

2. Phân tích file cấu hình chính của Nginx

Nginx quản lý cấu hình theo DirectiveBlock.

  • Directive là các câu lệnh cấu hình cụ thể.
  • Block là tập hợp các câu lệnh lại với nhau dùng làm cho 1 việc gì đó.

- Để có thể xem file cấu hình chính của Nginx mà loại bỏ các comment đi ta sẽ thực hiện lệnh.

cat /etc/nginx/nginx.conf |grep -v "#"

- Kết quả:

user www-data;

worker_processes auto;

pid /run/nginx.pid;

include /etc/nginx/modules-enabled/*.conf;

events {

        worker_connections 768;

}

http {

        sendfile on;

        tcp_nopush on;

        tcp_nodelay on;

        keepalive_timeout 65;

        types_hash_max_size 2048;

        include /etc/nginx/mime.types;

        default_type application/octet-stream;

        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;

        error_log /var/log/nginx/error.log;

        gzip on;

        include /etc/nginx/conf.d/*.conf;

        include /etc/nginx/sites-enabled/*;

}

2.1  Giải thích file cấu hình main block 

Main block là tập hợp các câu lệnh không được đóng trong dấu {}. Những lệnh này áp dụng với tất cả mọi thành phần có trong Nginx.

Giải thích các lệnh:

  • user www-data: Khi ta tải nginx về sẽ tự động tạo ra 1 user www-data để quản lý các tài nguyên.
  • worker_processes auto: Chỉ ra số CPU mà nginx có thể dùng ở đây là tự động.
  • pid /run/nginx.pid: số PID của master process.
  • include /etc/nginx/modules-enabled/*.conf: Khai báo các thư viện hỗ trợ và đặc biệt là chỉ có các file nào có đuôi “.conf” mới có thể tham gia.
cấu hình main block 
cấu hình main block 

2.2 Giải thích file cấu hình của event block

Event block này chỉ có 1 lệnh duy nhất là “worker_connections 1024”. Giá trị này liên quan đến worker processes, 1024 có nghĩa là mỗi worker process sẽ chịu tải là 1024 kết nối cùng lúc. Giá trị này chúng ta có thể tùy thuộc vào phần cứng của máy chủ.

2.3 Giải thích file cấu hình của http block

Http block là tập hợp các câu lệnh liên quan đến giao thức http. Tất cả các giao thức liên quan đến http bắt buộc phải tuân thủ các lệnh trong trong block này.

Giải thích các câu lệnh trong http block:

  • sendfile on: cho phép gửi file.
  • tcp_nopush on: Nginx sẽ gửi dữ liệu phản hồi mà không cần chờ đủ một phần nhất định của dữ liệu hoặc cho đến khi có thêm dữ liệu.
  • tcp_nodelay on: tùy chọn này sẽ tắt việc gửi bộ đệm (buffering) khi gửi dữ liệu qua mạng, điều này có thể giúp giảm độ trễ (latency) trong truyền tải dữ liệu. 
  • keepalive_timeout 65: Xác định thời gian chờ trước khi đóng 1 kết nối, ở đây là 65s.
  • types_hash_max_size 2048: là một hướng dẫn cho NGINX về kích thước bảng băm (hash table) mà nó sử dụng để lưu trữ các kiểu MIME (Content-Type) dự định được sử dụng trong phản hồi HTTP.
  • include /etc/nginx/mime.types: Khai báo thêm thư viện hỗ trợ cho http.
  • ssl_prefer_server_ciphers on: sử dụng để chỉ định rằng máy chủ sẽ ưu tiên sử dụng các cipher được cấu hình bởi máy chủ (server) khi thiết lập kết nối SSL/TLS.
  • access_log /var/log/nginx/access.log: chỉ ra đường dẫn lưu các nhật ký truy cập thành công.
  • error_log /var/log/nginx/error.log: chỉ ra đường dẫn lưu các nhật ký truy cập thất bại.
  • gzip on: Cho phép nén file dưới dạng gzip trong quá trình truyền tải.
  • include /etc/nginx/conf.d/*.conf: các file có đuôi “.conf” trong thư mục  /etc/nginx/conf.d/ sẽ được tham gia cấu hình thông thường ta dùng để thêm các file cấu hình của chính mình.
  • include /etc/nginx/sites-enabled/*: các file có đuôi “.conf” trong thư mục /etc/nginx/sites-enabled có thể tham gia cấu hình. Chúng ta nên tạo các file cấu hình ở thư mục sites-available sau đó mới tạo ra Symbolic Link đưa vào sites-enabled để thuận tiện nhất khi ta muốn tạm thời dừng file cấu hình đó mà không cần xóa.
cấu hình http block
cấu hình http block

3. Một số lưu ý với file cấu hình Nginx

Khi thực hiện thao tác với các file cấu hình trong Nginx, bạn cần lưu ý một số điểm sau:

  • Mỗi khi bạn muốn sửa chữa hay thêm cấu hình vào Nginx tuyệt đối không được sửa file chính là nginx.conf mà phải tạo các file mới rồi gắn vào thư mục sites-available rồi mới tạo symlink đến thư mục sites-enabled.
  • Nếu các bạn thắc mắc tại sao phải thêm file vào thư mục sites-available rồi mới tạo symlink đến thư mục sites-enabled. Các bạn hãy tưởng tượng rằng các bạn có 1 cái bánh và có rất nhiều gia vị như: đường, tương, muối, tiêu,... nhưng mục đích bạn muốn ăn bánh mỳ thì bạn chỉ cho thêm tương chứ không cho thêm đường. Thì các file trong thư mục sites-available là các gia vị còn khi bạn muốn thực hiện cái gì thì bạn gắn nó vào thư mục sites-enabled. Khi nào không muốn dùng đến nữa thì xóa symlink đi chứ không cần xóa cả file.
  • Các file cấu hình bên trên mình giới thiệu các bạn hãy coi như nó là cảnh sát giao thông điều hướng đường đi còn thực hiện truyền tải cái gì lên trang web thì cần phải 1 thư mục khác.
  • Thông thường các thư mục chứa nội dung trang web sẽ nằm ở /var/www/ đối với Ubuntu cài Nginx và /usr/share/nginx/ đối với Centos cài Nginx . Lúc này là công việc của những người lập trình thiết kế website thực hiện . 
  • Nếu bạn là người không biết lập trình tôi có thể hướng dẫn bạn cài wordpress để có thể tự tạo cho mình 1 website miễn phí và bài này sẽ được thực hiện trong phần cấu hình Reverse Proxy ở phần sau.
lưu ý với file cấu hình Nginx
lưu ý với file cấu hình Nginx

Tổng kết

Hi vọng qua bài viết này các bạn đã hiểu rõ hơn về Nginx . Đặc biệt các bạn cần phải hiểu và đọc được các file cấu hình của Nginx. Nginx là một công cụ hỗ trợ các trang web rất mạnh mẽ. Nếu bạn đã nắm vững được các file cấu hình và cách nó hoạt động thì khi làm đến phần sau như cấu hình Reverse Proxy hay Loadbalancing thì thực sự rất dễ dàng.

>>> Có thể bạn quan tâm: Web server là gì? Hiểu rõ về cơ chế hoạt động của web server

Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật