Thứ sáu, 05/06/2015 | 00:00 GMT+7

Cách cấu hình Nginx để sử dụng các trang lỗi tùy chỉnh trên CentOS 7

Nginx là một web server hiệu suất cao có khả năng cung cấp nội dung một cách linh hoạt và mạnh mẽ. Khi thiết kế các trang web , điều hữu ích là tùy chỉnh mọi phần nội dung mà user của bạn sẽ thấy. Điều này bao gồm các trang lỗi khi họ yêu cầu nội dung không có sẵn. Trong hướng dẫn này, ta sẽ trình bày cách cấu hình Nginx để sử dụng các trang lỗi tùy chỉnh trên CentOS 7.

Yêu cầu

Để bắt đầu với hướng dẫn này, bạn cần một user không phải root có quyền sudo . Bạn có thể cài đặt user thuộc loại này theo hướng dẫn cài đặt ban đầu của ta cho CentOS 7 . Bạn cũng cần phải cài đặt Nginx trên hệ thống của bạn . Tìm hiểu cách cài đặt điều này theo hướng dẫn này .

Tạo các trang lỗi tùy chỉnh của bạn

Ta sẽ tạo một vài trang lỗi tùy chỉnh cho mục đích demo , nhưng các trang tùy chỉnh của bạn rõ ràng sẽ khác.

Ta sẽ đặt các trang lỗi tùy chỉnh của bạn trong folder /usr/share/nginx/html nơi Nginx của CentOS đặt root tài liệu mặc định của nó. Ta sẽ tạo một trang cho các lỗi 404 được gọi là custom_404.html và một trang cho các lỗi cấp 500 chung được gọi là custom_50x.html . Bạn có thể sử dụng các dòng sau nếu bạn chỉ đang thử nghiệm. Nếu không, hãy đặt nội dung của bạn ở những vị trí sau:

  • echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /usr/share/nginx/html/custom_404.html
  • echo "<p>I have no idea where that file is, sorry. Are you sure you typed in the correct URL?</p>" | sudo tee -a /usr/share/nginx/html/custom_404.html
  • echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /usr/share/nginx/html/custom_50x.html
  • echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /usr/share/nginx/html/custom_50x.html

Bây giờ ta có hai trang lỗi tùy chỉnh mà ta có thể phục vụ khi khách hàng yêu cầu dẫn đến các lỗi khác nhau.

Cấu hình Nginx để sử dụng các trang lỗi của bạn

Bây giờ, ta chỉ cần nói với Nginx rằng nó nên sử dụng các trang này khi nào các điều kiện lỗi chính xác xảy ra. Ta cần điều chỉnh các khối server của bạn . Trên CentOS 7, khối server chính nằm trong file /etc/nginx/nginx.conf . Ta sẽ cấu hình khối server này, nhưng bạn nên điều chỉnh bất kỳ khối server nào khác mà bạn đã cấu hình :

  • sudo nano /etc/nginx/nginx.conf

Bên trong file , định vị khối xác định ngữ cảnh server . Bây giờ ta có thể trỏ Nginx đến các trang lỗi tùy chỉnh của ta .

Trực tiếp các lỗi 404 đến trang 404 tùy chỉnh

Tệp cấu hình CentOS Nginx đã xác định trang lỗi 404 bằng cách sử dụng chỉ thị error_page . Ta cần thay đổi điều này để khi lỗi 404 xảy ra (khi không tìm thấy file được yêu cầu), trang tùy chỉnh bạn đã tạo sẽ được phục vụ. Ta sẽ điều chỉnh khối vị trí được liên kết cho file để ta có thể đảm bảo file root trùng với vị trí hệ thống file của ta và file chỉ có thể truy cập được thông qua chuyển hướng Nginx nội bộ (khách hàng không thể yêu cầu trực tiếp):

/etc/nginx/nginx.conf
http {      . . .      server {          . . .          error_page 404 /custom_404.html;         location = /custom_404.html {             root /usr/share/nginx/html;             internal;         }          . . .     } } 

Thông thường, ta sẽ không phải đặt root trong khối vị trí mới vì nó trùng với root trong khối server . Tuy nhiên, ta đang trình bày rõ ràng ở đây để các trang lỗi của ta được phục vụ ngay cả khi ta di chuyển nội dung web thông thường và root tài liệu được liên kết sang một vị trí khác.

Trực tiếp 500 lỗi cấp cho trang 50x tùy chỉnh

Tiếp theo, ta có thể thêm các chỉ thị đảm bảo rằng khi Nginx gặp lỗi cấp 500 (sự cố liên quan đến server ), nó sẽ phục vụ trang tùy chỉnh khác mà ta đã thực hiện. Điều này sẽ tuân theo cùng một công thức mà ta đã sử dụng trong phần trước. Lần này, ta đặt nhiều lỗi cấp 500 để tất cả sử dụng trang custom_50x.html :

/etc/nginx/nginx.conf
http {      . . .      server {          . . .          error_page 404 /custom_404.html;         location = /custom_404.html {             root /usr/share/nginx/html;             internal;         }          error_page  500 502 503 504 /custom_50x.html;         location = /custom_50x.html {             root /usr/share/nginx/html;             internal;         }          location /testing {             fastcgi_pass unix:/does/not/exist;         }     } } 

Ở dưới cùng, ta cũng đã thêm một thẻ FastCGI giả để ta có thể kiểm tra trang lỗi 500 cấp của bạn . Điều này sẽ không hoạt động chính xác vì phần backend không tồn tại. Truy cập một trang ở đây sẽ cho phép ta kiểm tra xem các lỗi cấp 500 có phục vụ trang tùy chỉnh của ta hay không.

Lưu file khi bạn hoàn tất.

Khởi động lại Nginx và kiểm tra các trang web

Kiểm tra cú pháp của file cấu hình của bạn bằng lệnh :

  • sudo nginx -t

Nếu bất kỳ lỗi nào được báo cáo, hãy sửa chúng trước khi tiếp tục. Khi không có lỗi cú pháp nào được trả lại, hãy khởi động lại Nginx bằng lệnh :

  • sudo systemctl restart nginx

Bây giờ, khi bạn truy cập domain hoặc địa chỉ IP của server và yêu cầu file không tồn tại, bạn sẽ thấy trang 404 mà ta cài đặt :

http://server_domain_or_IP/thiswillerror 

nginx tùy chỉnh 404

Khi bạn đi đến vị trí ta cài đặt cho thẻ FastCGI, ta sẽ nhận được lỗi 502 Bad Gateway với trang 500 cấp tùy chỉnh của ta :

http://server_domain_or_IP/testing 

nginx tùy chỉnh 50x

Đến đây bạn có thể quay lại và xóa vị trí pass FastCGI giả khỏi cấu hình Nginx của bạn .

Kết luận

Đến đây bạn sẽ cung cấp các trang lỗi tùy chỉnh cho trang web của bạn . Đây là một cách dễ dàng để cá nhân hóa trải nghiệm của user ngay cả khi họ đang gặp sự cố. Một gợi ý cho các trang này là bao gồm các liên kết đến các vị trí mà họ có thể đến để nhận trợ giúp hoặc biết thêm thông tin. Nếu bạn làm điều này, hãy đảm bảo các đích liên kết có thể truy cập được ngay cả khi các lỗi liên quan đang xảy ra.


Tags:

Các tin liên quan

Cách cấu hình Nginx để sử dụng các trang lỗi tùy chỉnh trên Ubuntu 14.04
2015-06-05
Cách chuyển hướng www sang không có www với Nginx trên CentOS 7
2015-05-04
Cách chuyển hướng www thành không có www với Nginx trên Ubuntu 14.04
2015-05-04
Cách triển khai ứng dụng Rails với Puma và Nginx trên Ubuntu 14.04
2015-04-01
Cách triển khai ứng dụng Rails với Unicorn và Nginx trên Ubuntu 14.04
2015-03-26
Cách cung cấp ứng dụng flask với Gunicorn và Nginx trên CentOS 7
2015-03-23
Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu 14.04
2015-03-20
Cách cung cấp các ứng dụng Flask với uWSGI và Nginx trên CentOS 7
2015-03-20
Cách cung cấp các ứng dụng Flask với uWSGI và Nginx trên Ubuntu 14.04
2015-03-19
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Ubuntu 14.04
2015-03-18