因此,我们有一个 nginx 代理缓存,即使 npm 出现故障,也能维持正常运行时间。
有时,该服务器(通常每隔几个月一次)会开始返回400 bad request
某个特定包的每个响应。我认为这是一个损坏的缓存或其他问题。所以我们清除缓存,然后就可以了npm install
。我们尝试简单地重新启动服务器,但结果发现这还不够。值得一提的是,实际源(npm 本身)对同一对象(即 tar.gz 文件)返回 200OK。
配置如下: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;
}
}