Sergei
try_files может принять только один именованный локейшн.
Sergei
то есть try_files @named1 @named2; нельзя
Sergei
или я неправильно понял?
Dmitrii
Так там у меня try_files @aws =403;
Dmitrii
Чтобы переопределить тело ответа если доступ к файлу запрещен - S3 возвращает XML
Dmitrii
Я меняю его на обычный Forbidden
Sergei
В случае, если ни один файл не найден, то делается внутреннее перенаправление на uri, заданный последним параметром.
Sergei
только один элемент в списке может быть умным (именованный локейшн или изменение кода). функционал =404 не работает с именованным локейшном. вместо этого вы попытались найти файл с именем '@s3'
Dmitrii
Что значит ни один файл не найден? У меня в локейшене aws lua блок и там же proxy_pass
Dmitrii
о я говорю, оно реально никуда не проксирует. До амазона пинг 200-300мс, этого не видно во времени ответа
Sergei
try_files a b c d e f LAST;
проверит существование файлов a, b, c, d, e и f, а если ни один из них не найден - то передаст обработку в LAST
Sergei
в вашем случае @s3 читается не как именованный локейшн, а как имя файла.
Aleksey
вы щас такие крутые штуки обсуждаете. а есть чо почитать
Aleksey
книжко какое ?
Sergei
http://nginx.org/ru/docs/http/ngx_http_core_module.html
Aleksey
нее
Aleksey
дока нужна когда идеи есть
Sergei
http://nginx.org/en/books.html
Dmitrii
Эээм. Так почему оно читает @aws как файл то?
Sergei
потому что try_files делает то, что он делает, а не то что вы думаете.
дока: Проверяет существование файлов в заданном порядке и использует для обработки запроса первый найденный файл, причём обработка делается в контексте этого же location’а
вы думаете: происходит последовательное обращение ко всем $uri с помощью внутреннего перенаправления и в случае 2хх ответа, возвращается.
Dmitrii
Но тогда бы все мануалы по настройке PHP не работали, где объявляют @php с проксированием в fpm
Denis
Sergei
location / {
error_page 418 = @s3; return 418;
}
location @s3 {
//s3...
proxy_pass...
error_page 404 = @404_handler;
}
location @404_handler {
root /path/to/404;
}
Sergei
Sergei
поэтому try_files $uri @back; работает, а try_files @back1 @back2; - нет.
Dmitrii
Как же тогда подсунуть стандартную страницу ошибки на код 403?
Dmitrii
Они где то лежат?
Sergei
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
Aleksey
#nginx #book
Vladimir
Dmitrii
Но там надо обязательно свой файл пихать
Dmitrii
Ниужели нет способа прочто сказать - покажи дефолт
Sergei
так емое
Dmitrii
А хотя наверное я понял... можно через виртуальный локейшен с return 403
Sergei
proxy_intercept_errors on;
и всё.
Sergei
если error_page не включен, начнут показываться дефолтные ошибки.
Dmitrii
У меня так не работает
Dmitrii
Щас еще раз перепроверю
Dmitrii
Поместил директиву прямо перед proxy_pass
Dmitrii
Да, в общем надо включить перехват, объявить @403 { return 403 } и указать его в error_page
Dmitrii
Вообще, было бы логично, если бы все именованые локейшены парсились как именованые в try_files
Sergei
было бы. но нет.
Aleksey
Так эта книжка не то.
Aleksey
Есть какая нить в стиле основы http от простого к сложному
Aleksey
?
Sergei
RFC?
Aleksey
Нее
Aleksey
Кукбук скорее
Anton
какие там основы?
Anton
начни с вики, желательно енг, дальше в гугл
Aleksey
meh...
Aleksey
Я не новичок.
Aleksey
Просто понял что хочу систематизировать знания
Aleksey
Книжки в стиле документация по продукту для этого фигово подходят
Pavel
Коллеги, а ведь бессмысленно делать
mysqldump -h remotehost somedb | bzip2 > dump.sql.bz2 && bunzip2 < dump.sql.bz2 | mysql localbase ?
Pavel
получается дамп сжимается и разжимается локально?
Lex
уменьшить io?
Pavel
Мне тут говорят что это работает в разы быстрее чем без сжатия. Почему?
Pavel
Должно медленнее работать
CMDR Jack
ЭЭЭ
CMDR Jack
БЛЯДЬ ЗАЧЕМ
CMDR Jack
Допустим со сжатием оно там типо буфферы не забивает или еще что, хз
CMDR Jack
Но в файл-то зачем
CMDR Jack
mysqldump <dbname> | mysql <otherdbname>
CMDR Jack
Ну ок
CMDR Jack
mysqldump <dbname> | bzip2 -c | bzip2 -cd | mysql <otherdbname>
CMDR Jack
В файл-то зачем!
CMDR Jack
А, хотя я понял, зачем, кажись
CMDR Jack
Мы при дампе не ждем прочтения из пайпа
CMDR Jack
А, хотя там же вообще не пайп, а сдампить и потом всосать
CMDR Jack
Хз, надо потестить
CMDR Jack
Мне ща негде
CMDR Jack
Из прикольных штук, которые действительно быстрее работают, чем общепринятые практики:
tar -czf tarball.tgz <list>
vs
tar -c <list> | gzip > tarball.tgz
CMDR Jack
Второе работает быстрее
CMDR Jack
На больших объемах прямо заметно становится
CMDR Jack
Почему? Два процесса, а не один на одном ядре.
Pavel
Я померял просто дамп в файл
с сжатием 4% cpu 3:23.12 total
без сжатия 1% cpu 3:13.99 total
Pavel
несущественная разница