Я создал несколько пользовательских HTML-страниц ошибок 4xx и 5xx для большинства ошибок, перечисленных на страница Википедии. Я бы хотел установить их на любой сервер nginx, который я настроил, не слишком сильно влияя на производительность.
Следуя документации, я придумал эту директиву конфигурации для ошибки:
error_page 404 /nginx/404.html;
location = /nginx/404.html {
alias /usr/share/nginx/errors/404.html;
internal;
}
Я положил это в /etc/nginx/snippets/errors.conf
и могу включать фрагмент во все мои server
блоки.
Однако это отлично работает ...
Предполагается около 50 location
директивы каждому server
блок на коробке.
Является ли это чрезмерным, и есть ли более эффективный способ добиться того же? Я избегал серверных операторов include, if и переписывал, думая, что для этого потребуется больше ресурсов сервера.
Если вы не сопоставляете каждую страницу ошибки с ее собственным местоположением, вы можете сделать это с помощью одной директивы местоположения:
error_page 402 /error/402.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
... etc.
location = /error/ {
alias /usr/share/nginx/errors/;
}