Trang bảo trì trên nginx, thực hành tốt nhất


13

Tôi muốn cấu hình máy chủ để hiển thị trang bảo trì khi nó tồn tại. Tôi đã thử mã này và hoạt động:

location / {
    try_files /maintenance.html $uri $uri/ @codeigniter;
}

Nhưng tôi nhận thấy nó sẽ được phục vụ với 200 mã trạng thái và nó có thể gây nhầm lẫn cho các công cụ tìm kiếm. Tôi nghĩ rằng cách thực hành tốt nhất sẽ là trả về mã trạng thái 503. Trên google tôi tìm thấy một số trang có liên quan về nó, như thế này . Tuy nhiên, họ sử dụng if để thực hiện chuyển hướng và theo tài liệu nginx, không an toàn khi sử dụng ifs.

Có cách nào để làm điều đó mà không sử dụng nếu? Có an toàn để sử dụng nếu trong trường hợp này?

Cảm ơn.

Câu trả lời:


7

Tôi nghĩ rằng cách tốt nhất sẽ là trả về 500 mã trạng thái.

Tôi nghĩ bạn có nghĩa là 503 thay vì 500.

họ sử dụng ifđể thực hiện chuyển hướng và theo tài liệu nginx, việc sử dụng ifs không an toàn.

Số Chỉ return100% an toàn bên iftrong locationngữ cảnh.

Theo tài liệu nginx , bạn có thể chỉ định mã trạng thái HTTP làm đối số cuối cùng try_files. Tôi đã thử điều này nhưng nó không hoạt động.


21

Đây là những gì tôi làm.

            if (-f $document_root/maintenance.html) {
                    return 503;
            }
            error_page 503 @maintenance;
            location @maintenance {
                    rewrite ^(.*)$ /maintenance.html break;
            }

Nếu tập tin ở đó, nó sẽ hiển thị trang bảo trì. Khi bạn xóa tệp, bạn sẽ trở lại bình thường.


1
Vâng, đó là cùng một mã trong liên kết trong câu hỏi. Tôi thực sự hỏi liệu có an toàn khi sử dụng ifs trong trường hợp này không vì nó không được sử dụng theo tài liệu .
NeDark

1
Và tài liệu tương tự: In some cases it's also possible to move ifs to server level (where it's safe as only other rewrite module directives are allowed within it).Lỗi bảo trì_page như Mike hiển thị thường được đặt trong bối cảnh máy chủ {}.
Regan

1
Tôi đã làm như vậy ngoại trừ chỉ thực hiện 'return 503' mà không kiểm tra sự tồn tại của tệp. Bằng cách đó, tôi chỉ có thể bật / tắt trang web (sử dụng bố cục "trang web có sẵn" / "hỗ trợ trang web" của Debian) bằng cách liên kết tượng trưng và bật trang bảo trì.
Asfand Qazi

1
Âm thanh như thế này sẽ là một hiệu suất thành công: NGINX sẽ cần kiểm tra sự tồn tại của một tệp cho mỗi yêu cầu ...
Marc

1
Marc, không phải vì các tệp thường truy cập được lưu trữ trong bộ đệm của hệ thống tệp trong bộ nhớ.
Mike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.