Làm quen với việc cài đặt và cấu hình Nginx

Tram Ho

Nội dung bài viết hoàn toàn là lý thuyết để bản thân có cái nhìn tổng quan về việc Nginx có gì và làm được những gì. Vì vậy, hôm nay mình sẽ đi tìm hiểu cách cấu hình Nginx cho dự án của bạn. Mong rằng bài viết sẽ có ích đối với bạn.

Cài đặt

Việc cài đặt Nginx từ nguồn cung cấp bao gồm các mô-đun của bên thứ ba giúp cho Nginx mạnh mẽ hơn nhiều. Nó cho phép chúng ta tùy chỉnh để phù hợp với nhu cầu của ứng dụng.

Sử dụng Debian để cài đặt.

Cách để bạn có thể kiểm tra câu lệnh trên đã cài đặt Nginx thành công chính là chúng ta sử dụng command kiểm tra phiên bản.

Kết quả

Webserver mà bạn vừa thực hiện cài đặt sẽ có thông tin cài đặt ở

Đây là các thư mục, tệp ở trong nó

Như bạn thấy, ở trong này có khá nhiều thư mục và tệp. Tuy nhiên, ta chỉ cần đặc biệt chú ý đến nginx.conf và thư mục sites-available.

Cấu hình

Mặc định tệp nginx.conf sẽ như sau:

Tệp được cấu trúc thành Contexts. Đầu tiên là events context, tiếp theo là http context và cuối cùng là 1 ví dụ để cấu hình mail. Với cấu trúc như trên cho phép một số lớp nâng cao cấu hình. Bởi vì trong mỗi context có thể có các context lồng nhau khác có thể kế thừa từ cha mẹ của chúng và nó cũng có khả năng ghi đè khi cần thiết.

Nhiều thứ trong tệp này có thể được điều chỉnh dựa trên nhu cầu của bạn. Tuy nhiên với sự đơn giản của Nginx cho nên bạn có thể hoàn toàn sử dụng cấu hình mặc định mà không cần chỉnh sửa gì. Với thực tế hiện tại như mình thì cũng không chỉnh sửa tệp này 😃 . Một số phần quan trọng của tệp cấu hình này là:

  • worker_processes: Xác định số lượng worker process mà Nginx sẽ sử dụng. Do Nginx là single thread cho nên con số này thường bằng với số core của CPU.
  • worker_connections: Đây là số lượng kết nối tối đa tại một thời điểm cho mỗi worker process và cho biết worker process có bao nhiêu người dùng có thể được phục vụ đồng thời bởi Nginx. Con số này càng lớn thì số lượng người dùng được Nginx phục vụ sẽ càng cao.
  • access_log và error_log: Đây là các tệp mà Nginx sử dụng để ghi lại các lần lỗi và truy cập.
  • gzip: Đây là các cài đặt để nén GZIP của các phản hồi. Kích hoạt cài đặt này cùng với các cài đặt phụ khác theo mặc định sẽ làm cho hiệu suất được nâng cao.

Cài đặt Nginx có thể cho nhiều hơn một trang web và các tệp xác định máy chủ. Các trang web của bạn nằm trong thư mục /etc/nginx/sites-available.

Thư mục sites-available bao gồm các cấu hình cho virtual hosts. Điều này cho phép máy chủ web được cấu hình cho nhiều trang web có cấu hình đặc biệt. Các trang web trong thư mục này không hoạt động và chỉ được bật nếu chúng ta tạo một sumbolic link vào thư mục /etc/nginx/sites-enabled.

Chúng ta thử với một tệp cấu hình được định nghĩa trong document của Laravel

Giống như nginx.conf thì tệp như trên cũng được định nghĩa theo lối nested context. Server context định nghĩa một máy chủ ảo cụ thể để xử lý các yêu cầu của người dùng. Bạn có thể có nhiều server block và Nginx sẽ chọn giữa chúng dựa trên listenserver_name.

Trong server block, chúng ta định nghĩa nhiều location context được sử dụng để quyết định cách xử lý các yêu cầu của máy khách. Bất cứ khi nào có yêu cầu đến, Nginx sẽ cố gắng so sánh URI của nó với một trong những location phù hợp từ đó đưa ra hướng xử lý phù hợp.

Một số nội dung quan trọng được sử dụng trong location context:

  • try_files sẽ cố gắng phân phát một tệp tĩnh trong thư mục trỏ đến root.
  • proxy_pass sẽ gửi yêu cầu đến một máy chủ proxy được chỉ định.
  • rewrite sẽ ghi đè URI đến dựa trên regex để một location block sẽ có thể xử lý nó.

Start Nginx

Sau một tràng dài các bước cấu hình Nginx cho máy chủ của bạn như trên thì tiếp đến chúng ta có thể khởi động Nginx như sau:

Còn khi bạn thực hiện bất kỳ thay đổi nào trong cấu hình Nginx, thì bạn cần khởi động lại (không có down time) như sau:

Để kiểm tra trạng thái của Nginx:

Dừng dịch vụ Nginx:

Dừng và khởi động lại Nginx

Kết luận

Bài viết là bước khởi đầu cơ bản để bạn có thể tự mình cấu hình Nginx cho chính ứng dụng của riêng bản thân. Tuy nhiên, như bạn thấy các thông tin cấu hình trên hoàn toàn đang ở dạng copy/paste và vẫn chưa hiểu được từng dòng lệnh với mục đích như nào, Hãy cùng tìm hiểu chúng ở những bài viết sau nhé.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo