moneyslow.com

Nginx配置Node.js反向代理(避免Recv failure: Connection reset by peer错误)

nodejs安装没有npm命令

nodejs安装没有npm命令

nodejs 出现Recv failure: Connection reset by peer 错误的,一般是由于网络问题,本身http就是不安全的,通常我们在js服务启动后,都要加个nginx代理,避免不必要的网络错误,后期是非常省事的。下面是nginx的简单配置:

server {
    listen       80 ;
    server_name  tinkink.net;

    error_log    /var/log/nginx/tinkink_error.log;
    access_log    /var/log/nginx/tinkink_accss.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_http_version 1.1;
        # Node.js的本机地址,注意端口
        proxy_pass    http://localhost:3000;
    }
}

证书配置:

server {
    listen       80 ;
    listen      443 ssl;
    server_name  tinkink.net;

    https_certificate /etc/nginx/ssl/tinkink.net.crt;
    https_certificate_key /etc/nginx/ssl/tinkink.net.key;

    # ...
}

如果服务多,需要加负载均衡的配置:

upstream nodejs {
    server 192.168.0.2:3000;
    server 192.168.0.2:3001;
    server 192.168.0.3:3000;
    server 192.168.0.3:3001;
}

server {
    # ...

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_http_version 1.1;
        # Node.js的本机地址,注意端口
        proxy_pass    http://nodejs;
    }
}

加权重的配置:

upstream nodejs {
    server 192.168.0.2:3000 weight=1;
    server 192.168.0.2:3001 weight=2;
    server 192.168.0.3:3000 weight=1;
    server 192.168.0.3:3001 weight=2;
}

默认情况下,请求会按顺序逐一分配到不同的 Node.js 服务,如果某一个服务挂了则会被剔除。上面这个配置则会让两台服务器的3001端口接受更多的请求。

其它的策略,
ip_hash:每个请求按访问ip的hash结果分配,这样在用户 IP 不变的情况下,将固定访问一个后端服务器
fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配
url_hash 按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器
策略使用方法:

upstream nodejs {
    # 写上策略名
    ip_hash
    server 192.168.0.2:3000;
    server 192.168.0.2:3001;
    server 192.168.0.3:3000;
    server 192.168.0.3:3001;
}
Exit mobile version