[LEMP – I] Giới thiệu và cấu hình nginx 1.9.12 trên CentOS 7

Sau một loạt bài viết cấu hình LAMP trên VPS, hôm nay mình tiếp tục giới thiệu đến các bạn loạt bài về LEMP Server. LEMP là chữ viết tắt của Linux, Engine X(Nginx), MariaDB, PHP(PHP-FPM). Mà linh hồn của nó chính là NGINX một Web Server được phát triển từ năm 2002, so với Apache ra đời từ những năm 1994 thì nó là cả một chặng đường dài.

Quả thực Nginx khác biệt rất nhiều: Nginx được viết hoàn toàn bằng ngôn ngữ C, Nginx phân biệt nội dung tĩnh và nội dung động xử lý các request tĩnh và chuyển các request động về Backend Server làm việc, giảm tiêu tốn tài nguyên xử lý request bằng việc dùng Socket thay cho Thread, các module được thêm vào trong quá trình biên dịch Nginx… đây chỉ là một trong những cái mới làm cho Nginx chạy nhanh hơn Apache, giúp tăng tốc Web Server.

Những năm gần đây Nginx ngày càng được nhắc đến nhiều hơn, xu thế kết hợp Nginx và Apache làm reverse proxy cũng dần đạt đỉnh, nhiều Web Master đã chuyển hẳn sang Nginx, cụ thể ra sao giờ mình cùng tìm hiểu về LEMP Stack thôi.

1. Các bước chuẩn bị cài NGINX

Bước 1: Trỏ domain về VPS, bạn có thể đăng ký domain trên godaddy nếu chưa có, trong loạt bài hướng dẫn LEMP Server cơ bản mình sẽ dùng domain demo1.thuysys.com, các bạn dùng IP Public của VPS cũng được nhé.
Bược 2: kiểm tra file hosts và hostname, cho phù hợp với domain dùng để test.
Bước 3: đọc bài, các bước cấu hình server mới.
Bước 4: Mặc định Web Server trên CentOS là Apache(httpd), bạn kiểm tra nếu đang được kích hoạt thì stop service lại hoặc xóa đi để tránh xung đột port 80 theo các bước bên dưới.

systemctl stop httpd.service
yum remove httpd
systemctl disable httpd.service

Cài NGINX trên CentOS 7 câu lệnh có khác một chút nhưng bạn vẫn có thể dùng lệnh như trên Linux CentOS 5/6 nó sẽ tự động forward sang các lệnh tương ứng trên CentOS 7.

2. Cài đặt NGINX 1.9.12 trên máy chủ CentOS

Đây là bản nginx mới nhất tính đến thời điểm hiện tại đặc biệt hỗ trợ giao thức HTTP/2 mới được công bố gần đây. Ok mình sẽ bắt đầu với việc thêm các package cần thiết vào server, tạo file repo để tải gói cài  đặt vi /etc/yum.repo.d/nginx.repo thêm đoạn mã bên dưới vào file repo.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Vì các gói cài nginx không có sẵn trong kho mặc định, bạn phải add thêm repo của nginx vào hệ thống, kiểm tra lại phiên bản nginx sau khi thêm repo yum info nginx.

Kiểm tra version trước khi cài nginx

Tiếp theo gõ lệnh cài NGINX.

yum install nginx

Chạy vèo cái xong, tiếp theo đến bước cấu hình nginx.

3. Tìm hiểu cấu hình NGINX cơ bản

Mặc định file cấu hình nginx có đường dẫn /etc/nginx/nginx.conf, khi mới config nginx mình thấy nó rất hỗn độn và khó tiếp cận. Sau một thời gian tìm hiểu nginx mình lại thích làm việc với cấu trúc mới của này, rất khoa học và linh hoạt.

Nginx quản lý cấu hình theo DirectiveBlock mình gọi nôm na là chỉ thị và các khối chúng có thể nằm lồng ghép vào với nhau. Những directive không thuộc block nào mình nhóm lại gọi là Main Block những setting trên directive này ảnh hưởng đến toàn server.

Nếu một directive nằm trong block nào đó thì nó có ý nghĩa trong block đó và các block con bên trong, khi directive được định nghĩa lại trong block con thì nó chỉ có tác dụng trong block con đó.
Trên đây là những quy tắc quan trọng khi cấu hình nginx bạn cần nắm được, giờ chúng ta đi vào chi tiết nhé.

Cấu trúc file cấu hình nginx

3.1 Main Block

Các chỉ thị chính trong block này.

User nginx: chỉ thị này quy định worker processes bên dưới được chạy với tài khoản nginx.

worker_processes: cấu hình chỉ ra rằng web server được xử lý chỉ bằng 1 CPU Core(Processor), giá trị này tương ứng với số CPU Core có trên máy chủ. Để kiểm tra số lượng CPU Core trên VPS hay máy chủ riêng bạn dùng nproc, muốn chi tiết hơn dùng lệnh cat /proc/cpuinfo.

error_log: đường dẫn đến file log lỗi của nginx server.

pid: số PID của master process, nginx dùng master process để quản lý worker process

3.2 Events Block

Mặc định nó có duy nhất một chỉ thị.

worker_connections: giá trị của nó liên quan đến worker processes, 1024 nghĩa là mỗi worker process sẽ chịu tải là 1024 kết nối cùng lúc. Nếu bạn có 2 worker process thì khả năng chịu tại của server sẽ là 2048 kết nối tại một thời điểm. Giá trị này bạn thay đổi tùy thuộc vào hardware của máy chủ không cứ phải 1024/worker process đâu nhé.

3.3 Http Block

Đây là block chúng ta làm việc nhiều nhất, có 3 loại block nằm bên trong là http, server, location. Như đã nói bên trên, trong block http có thể có các block http khác, trong bài này mình sẽ tập trung nói về block http trong file nginx.conf còn block serrver và location mình sẽ nói rõ hơn trong phần 2 khi cấu hình virtualhost tạo các website mới.

include: directive này gọi tới file mime.types chứa danh sách các file extensions trong /etc/nginx, giá trị mặc định là application/octet-stream;

log_format: đinh nghĩa một mẫu log có tên là main được sử dụng bởi access_log, các thông tin được ghi vào file log tương ứng với giá trị các biến $remote_addr, $remote_user, $time_local, $request …

access_log: chỉ là đường dẫn đến file log /var/log/nginx/access.log với template main được định nghĩa ở trên.

sendfile: chỉ thị này gọi đến function sendfile để xử lý việc truyền file, đọc docs trên nginx.org mình cũng chưa hiểu rõ directive này, giá trị mặc định trên nginx 1.9.12 là on.

Keepalive_timeout: xác định thời gian server chờ trước khi đóng một kết nối, giá trị mặc định là 65 giây.

Cuối cùng là một chỉ thị include khác rất quan trọng để gọi các file cấu hình nằm trong /etc/nginx/conf.d/, đây là nhóm file cấu hình Virtualhost cho Web Server.

Xong, như vậy mình đã lược qua về cấu hình nginx, tiếp theo là cho phép dịch vụ nginx khởi động cùng hệ thống.

systemctl enable nginx.service

Chạy lênh Start Web Server

systemctl start nginx.service

Giờ các bạn chỉ việc mờ trình duyệt lên nhập vào demo1.thuysys.com kết quả như hình bên dưới là cài đặt nginx thành công.

Khởi động Nginx

4. Tổng kết

Trên đấy là các kiến thức cơ bản về nginx và các thông số cấu hình mặc định, các thông số này hơi nặng về kỹ thuật một chút mình cố gắng trình bày một cách đơn giản nhất hy vọng các bạn không bị  rối. Nếu muốn quản trị Web Server Nginx các bạn cần phải hiểu cấu trúc của nó.

Bài tới mình sẽ hướng dẫn các bạn tạo Virtual host trên nginx mong nhận được sự góp ý của các bạn.

6 Comments

  1. Phong November 2, 2016 Reply
    • admin November 2, 2016 Reply
  2. Hai Au September 22, 2016 Reply
    • admin September 22, 2016 Reply
  3. Juno Hùng April 7, 2016 Reply
    • admin April 7, 2016 Reply

Leave a Reply