Отдача статики на nginx

Статический контент сайта — это картинки, css и js файлы, а также вложения в постах, т.е. всё то что не предполагает частого изменения.

Желательно, во-первых, обрабатывать их в nginx, а не складывать на плечи node.js — потому что nginx имеет богатые средства кеширования и удобную подстановку заголовков.

Также стоит отдавать их с отдельного поддомена — потому что это удобнее, а при расширении сайта можно будет весь этот поддомен переместить на другой сервер и другой IP — и получить возможность параллельной загрузки статических файлов, а значит значительное ускорение загрузки сайта. А там уже рукой подать до CDN.

Для этого заводим отдельный «сервер» в конфигурации nginx:

server {
listen 80;

server_name static.catethysis.ru;

location ~* .(jpg|jpeg|gif|png|ico|css|zip|rar|pdf)$ {
root /var/www/static;
error_page 404 = 404;
}
}

И перезагружаем nginx (sudo nginx -s reload).

Теперь можно создать папку /var/www/static/files и поместить туда какой-нибудь файл. Он станет доступен по адресу http://static.catethysis.ru/files/lm2596.pdf.

Файлы можно хранить и во вложенной папке, например так: http://static.catethysis.ru/files/tags/javascript.png.

Полная переустановка nginx (решено)

После очередного эксперимента с nginx мне оказалось проще переустановить его заново, чем отменять правки всех конфигурационных файлов. Однако, нужно правильно обойтись с конфигами.

Установка nginx на ubuntu и настройка его для работы с PHP

Я занимаюсь разработкой сайтов на node.js, поэтому давно ушёл от Apache. Поначалу использовал сам node.js в качесте веб-сервера, но это неправильно, да и не очень удобно отдавать им статику.

Недавно мне понадобилось разместить на том же сервере этот блог, а WordPress работает на PHP — значит, нужно каким-то образом их связывать. Вариант с проксированием через nginx запросов в апач отпал почти сразу — nginx должен работать на 80 порту, а апач соответственно на каком-то другом. Однако, вордпресс по каким-то причинам не работает на портах, отличных от 80 и 443. К тому же, сервер у меня слабенький, и я не могу позволить себе роскошь держать два запущенных веб-сервера.

Поэтому пробуем другую конфигурацию: nginx работает на 80 порту, и сам обрабатывает PHP вместо Apache. Запросы к блогу он будет отправлять в PHP-код через враппер fast_cgi, а запросы к node.js-сайту — отправлять в node.js.