Если ты всё еще пытаешься заставить 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.
0 комментариев