Hướng dẫn này dành cho những người đã sử dụng nginx bên ngoài vùng chứa docker. Như hướng dẫn trong bài Hướng dẫn Cài đặt Discouse trên server nginx.
Khi Discourse đang xây dựng lại hoặc khởi động, người dùng của bạn thường sẽ thấy thông báo lỗi từ trình duyệt của họ…
…hoặc thông báo lỗi 502 từ nginx
Nếu bạn muốn thay các trang lỗi trên thành trang có dạng như của aznet.io, thì chúng ta tiếp tục…
Tạo một trang lỗi
bạn sẽ phải thiết kế một trang lỗi để hiển thị khi Discourse ngoại tuyến. Hãy tạo một thư mục cho nó.
mkdir /var/www/errorpages
- Nếu bạn là một nhà thiết kế tài năng, hãy tự mình xây dựng một trang đẹp và chia sẻ nó tại đây!
- Nếu bạn cần sử dụng các tài nguyên bên ngoài như hình ảnh, hãy tải chúng lên
/errorpages/. - Bạn nên đưa
<meta http-equiv="refresh" content="120">vào trang của mình - điều này sẽ làm mới trang sau mỗi 120 giây, có nghĩa là Discourse sẽ tự động tải khi nó có sẵn trở lại. - Đặt tên cho tệp HTML chính của bạn
aznet_offline.htmlvà đặt tất cả các tệp vào/var/www/errorpages/.
Lưu ý: Bạn có thể đổi tên các tệp, và cũng thay đổi chúng trong nội dung file .html và file .conf bên dưới. Cũng thay đổi
aznet.iobằng tên miền của bạn.
Hoặc bạn có thể tải về các tệp tại đây và up nó lên errorpages.
Sau khi hoàn tất, hãy chỉnh sửa cấu hình Nginx để:
Phục vụ trang bạn vừa tạo:
nano /etc/nginx/sites-enabled/discourse.conf
Chỉ cần thêm
location /errorpages/ {
alias /var/www/errorpages/;
}
Vào phần https server trong cấu hình nginx của bạn rồi tải lại nginx
service nginx reload
Kiểm tra bằng cách truy cập https://aznet.io/errorpages/aznet_offline.html trong trình duyệt của bạn - bạn sẽ thấy trang lỗi mới của mình.
Phục vụ trang lỗi của bạn
Cuối cùng, chúng ta sẽ thiết lập nginx để phân phát trang lỗi của bạn khi nó không thể truy cập Discourse hoặc khi Discourse chưa sẵn sàng. Thêm các dòng sau vào khối location / {
error_page 502 =502 /errorpages/aznet_offline.html;
proxy_intercept_errors on;
Cuối cùng, file discourse.conf của bạn sẽ có dạng như thế này:
server {
listen 80; listen [::]:80;
...
}
server {
listen 443 ssl http2; listen [::]:443 ssl http2;
...
location / {
...
error_page 502 =502 /errorpages/aznet_offline.html;
proxy_intercept_errors on;
}
location /errorpages/ {
alias /var/www/errorpages/;
}
}
Áp dụng các thay đổi của bạn:
service nginx reload
Nếu bạn muốn kiểm tra cài đặt của mình, hãy chạy
cd /var/discourse
./launcher stop app
để đưa trang web của bạn ngoại tuyến và cố gắng truy cập nó để xem kết quả.
Đừng quên chạy
cd /var/discourse
./launcher start app
sau đó để Discourse của bạn có sẵn trở lại!
[right]Nguồn: https://meta.discourse.org/t/adding-an-offline-page-when-rebuilding/45238[/right]


