使用NGINX为npm注册表兑现包裹

时间:2017-03-29 08:30:15

标签: node.js ubuntu nginx npm

我的项目是javascript app。 我有很多依赖项。 npm注册表的I / O占用了CI执行的主要部分。 所以我的想法是在npm注册表前设置NGINX并缓存tgz文件下载。 我正在运行Ubuntu 14.04。 NGINX版本是1.4.6

这是我的nginx配置脚本

\external

它可以工作,我可以安装包,但它们不会缓存在NGINX机器上。 无法在/ var / tmp / nginx / npm

中看到任何tgz文件

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

这是配置文件的最终版本。 主要问题是 proxy_buffering on;

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {



    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;


    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    error_log /var/log/nginx/error.logi debug;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    include /etc/nginx/conf.d/*.conf;
    #   include /etc/nginx/sites-enabled/*;
    # HTTP 1.1 support
    proxy_http_version 1.1;
    proxy_buffering on;
    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $proxy_connection;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
    proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
    proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;

    # If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
    # scheme used to connect to this server
    map $http_x_forwarded_proto $proxy_x_forwarded_proto {
    default $http_x_forwarded_proto;
    ''      $scheme;
    }

    # If we receive X-Forwarded-Port, pass it through; otherwise, pass along the
    # server port the client connected to
    map $http_x_forwarded_port $proxy_x_forwarded_port {
    default $http_x_forwarded_port;
    ''      $server_port;
    }

    # If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any
    # Connection header that may have been passed to this server
    map $http_upgrade $proxy_connection {
    default upgrade;
    '' close;
    }

    # Set appropriate X-Forwarded-Ssl header
    map $scheme $proxy_x_forwarded_ssl {
    default off;
    https on;
    }


    server {
        listen 80 default_server;
        location / {
            access_log /var/log/nginx/cache_root.log;
            proxy_pass http://nmregistry:4873;
        }

        location ~* .+/-/.+$ {
            root                    /var/tmp/nginx/npm;
            expires                 max;
            try_files               $uri @fetch;              
         }

        location @fetch {
                internal;
                proxy_pass              http://nmregistry:4873$request_uri;

                proxy_store             on;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_store_access      user:rw group:rw all:rw;
                proxy_temp_path       /var/tmp/nginx/npm 1 2;
                root                 /var/tmp/nginx/npm;
        }
    }
}