Thứ ba, 12/12/2017 | 00:00 GMT+7

Nginx Essentials: Khắc phục sự cố cài đặt và cấu hình

Nginx là một web server open-souce và miễn phí được sử dụng để lưu trữ các trang web và ứng dụng ở mọi quy mô. Phần mềm được biết đến với tác động thấp đến tài nguyên bộ nhớ, khả năng mở rộng cao và kiến trúc module , hướng sự kiện có thể cung cấp hiệu suất an toàn, có thể dự đoán được. Không chỉ là một web server , Nginx còn hoạt động như một bộ cân bằng tải, một cache HTTP và một Reverse Proxy .

Như với bất kỳ công cụ phần mềm phức tạp nào, có thể khó nhớ các lệnh cụ thể và các phương pháp hay nhất để quản lý server Nginx hoặc khắc phục sự cố bất kỳ vấn đề nào có thể phát sinh. Hướng dẫn kiểu cheatsheet này nhằm mục đích phục vụ như một tài liệu tham khảo nhanh cho bất kỳ ai làm việc với Nginx. Nó sẽ bao gồm một số lệnh quản lý dịch vụ cơ bản, cũng như các mẹo để chẩn đoán và giải quyết một số vấn đề phổ biến.

Cách sử dụng Hướng dẫn này:

  • Mỗi phần được dùng độc lập với những phần khác, vì vậy, vui lòng bỏ qua bất kỳ phần nào có liên quan đến nhu cầu của bạn.
  • Các lệnh trong mỗi phần của hướng dẫn này là độc lập và bạn nên thay thế các giá trị màu đỏ trong các lệnh ví dụ bằng các giá trị của bạn .
  • Khi có liên quan, các phần trong hướng dẫn này bao gồm các liên kết đến các tài nguyên khác mà bạn có thể tham khảo để biết thêm thông tin.
  • Hướng dẫn này giả định bạn đang làm việc với version Nginx được cài đặt từ repository mặc định của bản phân phối dựa trên Debian. Xin lưu ý một số quy ước được mô tả trong hướng dẫn này không có trên các bản phân phối khác hoặc trong các version của Nginx từ các nguồn khác.

Cài đặt Nginx

Sử dụng sudo apt-get , cập nhật index gói của bạn và sau đó cài đặt dịch vụ:

  • sudo apt-get update
  • sudo apt-get install nginx

Để biết thêm chi tiết về quá trình cài đặt và cài đặt , hãy làm theo hướng dẫn của ta về Cách cài đặt Nginx trên Ubuntu 16.04 .

Kiểm tra trạng thái của Nginx

Bạn có thể kiểm tra xem Nginx có đang chạy trên máy của bạn hay không bằng lệnh thông tin sau vào dấu nhắc lệnh:

  • sudo systemctl status nginx

Bật Nginx

Theo mặc định, Nginx được cấu hình để khởi động tự động khi server khởi động. Nếu muốn, bạn có thể tắt hành vi này bằng lệnh :

  • sudo systemctl disable nginx

Để bật lại dịch vụ khởi động khi server khởi động , hãy nhập:

  • sudo systemctl enable nginx

Dừng, Bắt đầu và Reload Nginx

Để dừng server Nginx đang chạy của bạn:

  • sudo systemctl stop nginx

Khi server đã bị dừng, bạn có thể bắt đầu lại bằng lệnh :

  • sudo systemctl start nginx

Để dừng và sau đó bắt đầu lại Nginx, hãy nhập:

  • sudo systemctl restart nginx

Bạn cũng có thể reload Nginx mà không làm gián đoạn kết nối:

  • sudo systemctl reload nginx

Để tìm hiểu thêm về systemd và lệnh systemctl , hãy xem phần giới thiệu này về những điều cần thiết của systemd .

Tạo root tài liệu cho trang web tĩnh

Khi sử dụng web server Nginx, các khối server (tương tự như server ảo trong Apache) được sử dụng để lưu trữ nhiều domain trên một server duy nhất. Mỗi khối server có root tài liệu riêng, một folder đặc biệt mà Nginx phải kiểm tra trước khi phân phối nội dung của domain .

Các lệnh trong khối bên dưới sẽ tạo root tài liệu mới, sửa đổi quyền sở hữu root tài liệu cho user không phải root của bạn và sửa đổi quyền của từng folder con trong /var/www/ .

  • sudo mkdir -p /var/www/example.com/html
  • sudo chown -R $USER:$USER /var/www/example.com/html
  • find /var/www -type d -exec chmod 775 {} \;

Trong ví dụ này, ta đảm bảo các folder root của tài liệu có quyền đọc và thực thi toàn cục, nhưng bạn nên thay thế một giá trị khác cho 775 để phản ánh nhu cầu cụ thể của bạn.

Tạo root tài liệu cho một trang web được xử lý động

Khi sử dụng Nginx với các chương trình nhất định (ví dụ: PHP-FPM) để tạo trang web được xử lý động, bạn có thể cần điều chỉnh quyền của một số file để cho phép truy cập group www-data hoặc thậm chí quyền sở hữu, đặc biệt nếu nó cần có khả năng ghi vào folder .

Các lệnh trong khối bên dưới sẽ tạo một root tài liệu mới, sửa đổi quyền sở hữu của root tài www-data group www-data và sửa đổi quyền của từng folder con trong /var/www .

  • sudo mkdir -p /var/www/example.com/html
  • sudo chown -R www-data:www-data /var/www/example.com
  • sudo find /var/www -type d -exec chmod 775 {} \;

Để tìm hiểu thêm về các quyền, hãy xem phần giới thiệu của ta về các quyền của Linux . Cũng có thể hữu ích khi xem lại hướng dẫn của ta về Cách cài đặt khối server Nginx ( Server ảo) trên Ubuntu 16.04 , cung cấp cách tiếp cận chi tiết để tạo và thay đổi root tài liệu.

Bật file cấu hình

Ta có thể kích hoạt file cấu hình của khối server bằng cách tạo một softlink từ folder sites-available sites-enabled folder sites-enabled , mà Nginx sẽ đọc trong khi khởi động.

Để thực hiện việc này, hãy nhập lệnh sau:

  • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Sau khi liên kết các file , hãy reload Nginx để phản ánh thay đổi và bật file cấu hình của khối server :

  • sudo systemctl reload nginx

Giải quyết các vấn đề về bộ nhớ group băm

Nginx sử dụng bảng băm (được tổ chức thành “ group ”) để xử lý nhanh dữ liệu tĩnh như tên server hoặc kiểu MIME. Do đó, nếu bạn đã thêm nhiều tên server , có khả năng kích thước của group băm tên server sẽ không còn đủ nữa và bạn sẽ thấy lỗi server_names_hash_bucket_size khi thực hiện thay đổi. Điều này có thể được giải quyết bằng cách điều chỉnh một giá trị trong file /etc/nginx/nginx.conf của bạn.

Để mở file cấu hình này, hãy nhập:

  • sudo nano /etc/nginx/nginx.conf

Trong file , hãy tìm chỉ thị server_names_hash_bucket_size . Xóa ký hiệu # để bỏ comment và tăng giá trị của chỉ thị bằng lũy thừa tiếp theo của hai:

/etc/nginx/nginx.conf
http {     . . .      server_names_hash_bucket_size 64;      . . . } 

Làm điều này sẽ tăng kích thước group của bảng băm tên server của Nginx và cho phép dịch vụ xử lý tất cả các tên server mà bạn đã thêm. Lưu file khi bạn hoàn tất, sau đó khởi động lại Nginx để phản ánh các thay đổi.

Kiểm tra file cấu hình của bạn

Khi nào bạn thực hiện thay đổi đối với file cấu hình Nginx của bạn , điều quan trọng là hãy kiểm tra xem bạn có để lại lỗi cú pháp nào không. Điều này có thể được thực hiện bằng cách chạy lệnh sau:

  • sudo nginx -t

Nếu có lỗi trong file cấu hình của bạn, kết quả của lệnh sẽ cho bạn biết chính xác lỗi được tìm thấy ở đâu trong file . Ngược lại, nếu không có lỗi cú pháp nào trong các file cấu hình nginx nào của bạn, bạn sẽ thấy kết quả tương tự như sau:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Nếu không tìm thấy lỗi nào và bạn muốn áp dụng các thay đổi của bạn ngay lập tức, hãy khởi động lại dịch vụ:

  • sudo systemctl restart nginx

Các file và folder Nginx quan trọng

Khi bạn dành thời gian làm việc với Nginx, bạn có thể thấy mình thường xuyên truy cập vào các file và folder sau:

Nội dung

  • /var/www/html : Đây là vị trí của root tài liệu mặc định mà từ đó nội dung web thực được phân phát. Gốc tài liệu có thể được thay đổi bằng cách thay đổi các file cấu hình Nginx.

Cấu hình server

  • /etc/nginx/ : Thư mục cấu hình Nginx mặc định nơi có thể tìm thấy tất cả các file cấu hình Nginx của bạn.
  • /etc/nginx/nginx.conf : Tệp cấu hình Nginx chính. Điều này có thể được hướng dẫn để áp dụng các thay đổi global đối với cấu hình của Nginx.
  • /etc/nginx/sites-available/default : Tệp khối server mặc định của Nginx. Các khối server cho mỗi trang web khác cũng được lưu trữ trong folder sites-available , mặc dù chúng sẽ không được sử dụng trừ khi chúng được liên kết đến trong folder sites-enabled .
  • /etc/nginx/sites-enabled/ : Thư mục lưu trữ “khối server ” được kích hoạt trên mỗi trang web. Thông thường, chúng được tạo bằng cách liên kết đến các file cấu hình được tìm thấy trong folder sites-available của sites-available .

Nhật ký server

  • /var/log/nginx/access.log : Mọi yêu cầu đến web server của bạn đều được ghi lại trong file log này trừ khi Nginx được cấu hình để làm theo cách khác.
  • /var/log/nginx/error.log : Mọi lỗi Nginx sẽ được ghi lại trong log này.
  • Để truy cập log hệ thống của tiến trình Nginx , hãy chạy lệnh sau:
  • sudo journalctl -u nginx

Kết luận

Hướng dẫn này bao gồm các lệnh và thực hành cơ bản để quản lý server Nginx, bao gồm cách khởi động, dừng và kiểm tra trạng thái của Nginx, cách tìm root tài liệu của trang web và cách kiểm tra cú pháp của file cấu hình Nginx. Để tìm hiểu thêm về cách làm việc với Nginx, ta khuyên bạn nên xem qua các hướng dẫn sau.


Tags:

Các tin liên quan

Cách thiết lập Let's Encrypt với Nginx Server Blocks trên Ubuntu 16.04
2017-10-27
Cách bảo mật Nginx bằng Let's Encrypt trên Ubuntu 16.04
2017-10-27
Cách tăng điểm tốc độ trang bằng cách thay đổi cấu hình Nginx của bạn trên Ubuntu 16.04
2017-08-15
Cách thêm module log vào Nginx trên Debian 8
2017-06-21
Cách triển khai ứng dụng Laravel với Nginx trên Ubuntu 16.04
2017-06-14
Cách bảo mật CI bằng SSL bằng Nginx trên Ubuntu 16.04
2017-05-26
Cách cấu hình Buildbot với SSL bằng Nginx Reverse Proxy
2017-05-17
Cách cấu hình Jenkins với SSL bằng cách sử dụng Nginx Reverse Proxy
2017-05-02
Cách tạo chứng chỉ SSL tự ký cho Nginx trên CentOS 7
2017-01-09
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Debian 8
2016-12-22