Если ты всё еще пытаешься заставить Node.js раздавать статику, сидишь на Express и мучаешься с медленным откликом — забудь. Пускай этим занимается Nginx, он для этого и создан. Настроить его не сложно, если не соваться с дикими заморочками и знать, где копать.

Я расскажу, как в три шага вытащить статику из-под ног Node и отдать ее быстрее, чем он успеет мигнуть. И да, без длинных рассуждений и маркетинговых соплей — только то, что реально работает.

Шаг 1: Залезь и поставь Nginx

Забудь свои экспериментальные сборки. Просто установи Nginx стандартной командой — это проще, чем пытаться докопаться до причины, почему твоя статика виснет. Если у тебя Ubuntu, вот тебе волшебство в консоли:

sudo apt-get update
sudo apt-get install nginx

Ты увидишь, как на сервере появляется что-то, что реально может обслуживать файлы. Если у тебя что-то не Ubuntu — сам разберешься, пакеты там похожие. Главное — поставить и не париться.

Шаг 2: Настраивай, чтобы не еб...ться потом

Nginx — это не Windows с мышкой, тут всё в текстовом файле, и если лажануть, можно получить кучу ошибок, но всё просто.

Открываешь конфиг:

sudo nano /etc/nginx/sites-available/default

В блоке server добавляешь вот этот кусок:

location /static/ {
    alias /путь/к/твоей/статике/;
    expires 1h;
}

Объясню по-русски: /static/ — это адрес, по которому будет ходить твой фронт за файлами. alias — путь к папке, где лежит эта самая статика. Не забудь заменить /путь/к/твоей/статике/ на настоящий путь на сервере, а не “по-умолчанию”.

expires 1h; — говорит браузеру не тормозить и кешировать файлы час, а не грузить их по сто раз подряд.

Шаг 3: Перезагрузи, чтобы Nginx начал жить

Как изменил конфиг — не жди, что он сам догадается. Перезагрузи его:

sudo service nginx restart

Если Nginx при этом плюется ошибками — не паникуй, что-то где-то напортачил. Проверь конфиг через:

sudo nginx -t

И исправь косяки, пока не будет syntax is ok.

Шаг 4: Проверь, что всё работает и не бьет в лоб

Зайди в браузер и забей адрес:

http://твой-сервер/static/ 

Если ты всё сделал правильно, увидишь список файлов или их содержимое, как они лежат в твоей папке статики.

Если нет — снова проверь путь в alias, права на папку, и чтобы файлы реально лежали.

Если хочешь реально работать с нагрузкой — добавь gzip и кеширование по умолчанию. Вот пример, чтобы не отвлекать:

gzip on;
gzip_types text/plain application/javascript text/css application/json image/svg+xml;

Это почти всегда экономит тебе нервные клетки и трафик.

Что ты получил по итогу?

Ты заставил Nginx сделать то, что он умеет лучше всего — быстро отдавать статические файлы. Node.js теперь можно оставить заниматься реальной работой — обработкой API, бизнес-логикой и прочим дерьмом, а статика летит прямо из-под ног Nginx.