В middleware NextJS каталог public прописан как protected: protected generatePublicRoutes(): Route[] {
Авторизация требуется только на загрузку файлов в данный каталог через запросы PUT и POST и реализована в Express. И насколько я представляю задачу, нужно, чтобы nginx знал об Express и динамический контент отдавал ему (на порт 3000 например), а работу со статикой брал на себя. Как этот функционал реализовать? пн, 28 сент. 2020 г. в 21:07, Alexey Galygin <m...@me.com>: > > Express действительно любит кэшировать состояния (правда это больше касается > шаблонов — он их компилирует и больше не проверяет, но слышать про файлы > такое удивительно, возможно используемое раздающее middleware придерживается > другой политики) > > обычная практика в таких случаях: > > выделение «датахранилки» — папки, которую через настроенный location раздаёт > nginx напрямую > с кэшами (заголовки и настройки добавить по вкусу) > https://nginx.org/ru/docs/beginners_guide.html#static > > вся статика складывается туда, и нет смысла грузить backend непрофильными > запросами вообще — nginx отстреляется лучше всего > > если каким-то файлам требуется авторизация, можно сделать дополнительный > internal location и с backend после проверки кидать туда (через > x-accel-redirect — > https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/) > и nginx опять таки отдаст статику напрямую и быстрее любой backend логики > > более того, можно сделать, чтобы правильна работала отдача частичного > контента (bytes range) и эффективная раздача с диска > > всё что не попадает под пути хранилки проксировать на Express > > On 28 Sep 2020, at 20:08, Cyril Zlachevsky <cyril.zlachev...@gmail.com> wrote: > > Есть приложение на NodeJS, которое прекрасно работает в > developer-режиме. В качестве http-сервера используется ExpressJS. > В production-режиме появляется проблема - http GET запросы возвращают > 404-ю ошибку для всех новых файлов, загруженных после старта приложения > в каталог public. > > Пример: если до старта файл public/static/old.jpg существовал, GET > запрос вернет его с кодом 200. > Если мы загрузили через nodejs-приложение файл public/static/new.jpg > GET-запрос будет возвращать ошибку 404. Если перезапустить приложение, > GET на public/static/new.jpg будет возвращать 200. > > Гугление проблемы привело к пониманию, что это не ошибка, а особенность > Express-сервера и для production рекомендуется использовать связку > nginx+express. Как мне настроить работу этой связки, я не вполне > представляю, поэтому прошу помощи здесь. _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru