Welcome! Log In Create A New Profile

Advanced

Re: статический контент и NodeJS Express

Alexey Galygin
September 28, 2020 02:08PM
Express действительно любит кэшировать состояния (правда это больше касается шаблонов — он их компилирует и больше не проверяет, но слышать про файлы такое удивительно, возможно используемое раздающее middleware придерживается другой политики)

обычная практика в таких случаях:

выделение «датахранилки» — папки, которую через настроенный location раздаёт nginx напрямую
с кэшами (заголовки и настройки добавить по вкусу)
https://nginx.org/ru/docs/beginners_guide.html#static <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.zlachevsky@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

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

статический контент и NodeJS Express

Cyril Zlachevsky September 28, 2020 01:10PM

Re: статический контент и NodeJS Express

Илья Шипицин September 28, 2020 01:20PM

Re: статический контент и NodeJS Express

Cyril Zlachevsky September 28, 2020 01:46PM

Re: статический контент и NodeJS Express

Alexey Galygin September 28, 2020 02:08PM

Re: статический контент и NodeJS Express

Cyril Zlachevsky September 29, 2020 01:16AM

Re: статический контент и NodeJS Express

Илья Шипицин September 29, 2020 01:44AM

Re: статический контент и NodeJS Express

fox September 29, 2020 01:46AM

Re: статический контент и NodeJS Express

Cyril Zlachevsky September 29, 2020 03:12AM

Re: статический контент и NodeJS Express

Илья Шипицин September 29, 2020 05:46AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 314
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready