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):
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 :
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 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 Đế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.
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.042015-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 uWSGI và Nginx trên CentOS 7
2015-03-20
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 Ubuntu 14.04
2015-03-19
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên CentOS 7
2015-03-18
 

