Thứ ba, 09/06/2015 | 00:00 GMT+7

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

Apache là web server phổ biến nhất trên thế giới. Nó được hỗ trợ tốt, nhiều tính năng và linh hoạt. 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 Apache để 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 Apache trên hệ thống của bạn . Tìm hiểu cách cài đặt điều này theo bước đầu tiên của 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 ta trong folder /var/www/html nơi cài đặt Apache 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 /var/www/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 /var/www/html/custom_404.html
  • echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /var/www/html/custom_50x.html
  • echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /var/www/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 Apache để sử dụng các trang lỗi của bạn

Bây giờ, ta chỉ cần nói với Apache 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ó thể tạo một file cấu hình mới trong folder /etc/httpd/conf.d nơi Apache đọc các đoạn mã cấu hình. Ta sẽ gọi file mới custom_errors.conf :

  • sudo nano /etc/httpd/conf.d/custom_errors.conf

Bây giờ ta có thể trỏ Apache đến các trang lỗi tùy chỉnh của ta .

Lỗi trực tiếp đến các trang tùy chỉnh chính xác

Ta có thể sử dụng chỉ thị ErrorDocument để liên kết từng loại lỗi với một trang lỗi liên quan. Về cơ bản, ta chỉ cần ánh xạ mã trạng thái http cho mỗi lỗi đến trang ta muốn phục vụ khi nó xảy ra.

Đối với ví dụ của ta , ánh xạ lỗi sẽ giống như sau:

/etc/httpd/conf.d/custom_errors.conf
ErrorDocument 404 /custom_404.html ErrorDocument 500 /custom_50x.html ErrorDocument 502 /custom_50x.html ErrorDocument 503 /custom_50x.html ErrorDocument 504 /custom_50x.html 

Chỉ riêng thay đổi này là đủ để phục vụ các trang lỗi tùy chỉnh khi các lỗi được chỉ định xảy ra.

Tuy nhiên, ta sẽ thêm một bộ cấu hình bổ sung để khách hàng không thể yêu cầu trực tiếp các trang lỗi của ta . Điều này có thể ngăn ngừa một số trường hợp kỳ lạ trong đó văn bản của trang tham chiếu đến lỗi, nhưng trạng thái http là “200” (cho biết yêu cầu thành công).

Trả lời với 404 khi các trang lỗi được yêu cầu trực tiếp

Để thực hiện hành vi này, ta cần thêm khối Files cho mỗi trang tùy chỉnh của bạn . Bên trong, ta có thể kiểm tra xem biến môi trường REDIRECT_STATUS có được đặt hay không. Điều này chỉ nên được đặt khi chỉ thị ErrorDocument xử lý một yêu cầu. Nếu biến môi trường trống, ta sẽ đưa ra lỗi 404:

/etc/httpd/conf.d/custom_errors.conf
ErrorDocument 404 /custom_404.html ErrorDocument 500 /custom_50x.html ErrorDocument 502 /custom_50x.html ErrorDocument 503 /custom_50x.html ErrorDocument 504 /custom_50x.html  <Files "custom_404.html">     <If "-z %{ENV:REDIRECT_STATUS}">         RedirectMatch 404 ^/custom_404.html$     </If> </Files>  <Files "custom_50x.html">     <If "-z %{ENV:REDIRECT_STATUS}">         RedirectMatch 404 ^/custom_50x.html$     </If> </Files> 

Khi các trang lỗi được khách hàng yêu cầu trực tiếp, lỗi 404 sẽ xảy ra do biến môi trường chính xác không được đặt.

Cài đặt kiểm tra lỗi 500 cấp độ

Ta có thể dễ dàng tạo ra lỗi 404 để kiểm tra cấu hình của bạn bằng cách yêu cầu nội dung không tồn tại. Để kiểm tra lỗi cấp 500, ta sẽ phải cài đặt một thẻ proxy giả để có thể đảm bảo các trang chính xác được trả lại.

Thêm chỉ thị ProxyPass vào cuối file . Gửi yêu cầu /proxytest đến cổng 9000 trên máy local (nơi không có dịch vụ nào đang chạy):

/etc/httpd/conf.d/custom_errors.conf
ErrorDocument 404 /custom_404.html ErrorDocument 500 /custom_50x.html ErrorDocument 502 /custom_50x.html ErrorDocument 503 /custom_50x.html ErrorDocument 504 /custom_50x.html  <Files "custom_404.html">     <If "-z %{ENV:REDIRECT_STATUS}">         RedirectMatch 404 ^/custom_404.html$     </If> </Files>  <Files "custom_50x.html">     <If "-z %{ENV:REDIRECT_STATUS}">         RedirectMatch 404 ^/custom_50x.html$     </If> </Files>  ProxyPass /proxytest "http://localhost:9000" 

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

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

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

  • sudo apachectl configtest

Giải quyết bất kỳ vấn đề nào được báo cáo. Khi file của bạn không có lỗi cú pháp, hãy khởi động lại Apache bằng lệnh :

  • sudo systemctl restart httpd

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 

apache tùy chỉnh 404

Khi bạn đi đến vị trí mà ta cài đặt cho thẻ proxy giả, ta sẽ nhận được lỗi "dịch vụ 503 không khả dụng" với trang 500 cấp tùy chỉnh của ta :

http://server_domain_or_IP/proxytest 

apache tùy chỉnh 50x

Đến đây bạn có thể quay lại và xóa dòng chuyển proxy giả khỏi cấu hình Apache 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 Apache để sử dụng các trang lỗi tùy chỉnh trên Ubuntu 14.04
2015-06-09
Cách thiết lập ModSecurity với Apache trên Ubuntu 14.04 và Debian 8
2015-06-05
Cách chạy trang web Django với Apache, mod_wsgi và MySQL trên FreeBSD 10.1
2015-05-29
Cách chuyển hướng www thành không có www bằng Apache trên Ubuntu 14.04
2015-05-04
Cách chuyển hướng www thành không có www bằng Apache trên CentOS 7
2015-05-04
Cách thiết lập server Apache, MySQL và Python (LAMP) mà không cần khung trên Ubuntu 14.04
2015-04-29
Cách cấu hình bộ đệm nội dung Apache trên CentOS 7
2015-04-13
Cách cấu hình bộ đệm nội dung Apache trên Ubuntu 14.04
2015-04-10
Cách cài đặt database Apache Accumulo NoSQL thân thiện với dữ liệu lớn trên Ubuntu 14.04
2015-03-19
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên CentOS 7
2015-03-19