Назад | Перейти на главную страницу

400 неверный запрос из кеша прокси

Итак, у нас есть прокси-кеш 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;
  }
}