Итак, у нас есть прокси-кеш nginx, который используется для поддержания безотказной работы, даже если npm выходит из строя.
Иногда этот сервер (заметно, раз в несколько месяцев) начинает возвращаться 400 bad request
для каждого ответа для определенного пакета. Я подумал, что это поврежденный кеш или что-то в этом роде. Итак, мы стираем кеш, а затем можем npm install
очередной раз. Мы попытались просто перезапустить сервер, но этого оказалось недостаточно. Стоит упомянуть, что фактический источник (сам npm) возвращает 200OK для того же объекта (а именно файлов tar.gz).
Вот конфиг: https://github.com/parris/private-npm-registry/blob/master/nginx/server.conf (не стесняйтесь исследовать окружающие файлы).
Конфигурация выглядит так:
server {
listen 8888;
server_name localhost;
location / {
proxy_pass https://registry.npmjs.org/;
proxy_cache npm;
proxy_cache_valid 200 302 3d;
proxy_cache_valid 404 1m;
# npm adds "_resolved": 'registry.npmjs.org/xyz.tgz" to package.json files
# this rewrites things correctly
sub_filter 'registry.npmjs.org' 'localhost:8888';
sub_filter_once off;
sub_filter_types application/json;
}
}