Чтобы показать страницу обслуживания во время развертывания, я всегда использовал следующую конфигурацию в nginx:
if (-f /home/shared/system/maintenance.html) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
root /home/shared/errors;
rewrite ^(.*)$ /maintenance.html break;
}
И все было в порядке, пока мне не нужно было добавить статический контент на страницу обслуживания (изображения, таблицы стилей и т. Д.)
Нет статического содержимого, работающего с такими журналами в error.log:
2011/05/05 02:47:20 [notice] 13760#0: *6 "^(.*)$" matches "/some.jpg", client: x.x.x.x, server: server.com, request: "GET /some.jpg HTTP/1.1", host: "server.com"
2011/05/05 02:47:20 [notice] 13760#0: *6 rewritten data: "/maintenance.html", args: "", client: x.x.x.x, server: server.com, request: "GET /some.jpg 2 HTTP/1.1", host: "server.com"
Что логично - если я переписываю все в maintenance.html, это означает, что статическое содержимое не является исключением.
Но я не могу найти правильного решения для перенаправления на каждый файл, кроме тех, которые физически существуют в папке root /home/shared/errors
.
PS./home/shared/errors
не делит ресурсы с общей папкой проекта - это совершенно отдельная папка (даже без символических ссылок на /current
для проекта.