PM2 与 Nginx 如何配合使用?

阅读时长 5 分钟读完

作为前端开发人员,我们都知道 PM2 和 Nginx 是非常常用的工具。其中,PM2 主要用于管理 Node.js 进程,Nginx 则主要用于实现反向代理、负载均衡等功能。在实际开发中,我们也经常需要将这两个工具配合起来使用,下面我们就来探讨一下 PM2 和 Nginx 如何配合使用吧。

配置 Nginx

我们首先需要在服务器上安装 Nginx,然后进行配置。

配置反向代理

在配置反向代理前,我们需要将域名解析到服务器上。然后,找到 Nginx 的配置文件,默认位于 /etc/nginx/nginx.conf,进行编辑。在 http 部分的最后一行添加如下代码:

其中,myapp 是一个自定义的名字,可以随意更改。这里我们假设我们的 Node.js 应用监听的端口是 3000。然后,我们在 nginx.conf 中添加以下代码:

-- -------------------- ---- -------
------ -
    ------ ---
    ----------- ------------ - ------------

    -------- - -
        ---------------- ---- ------
        ---------------- --------- -------------
        ---------- -------------
    -
-

在这里,我们配置了一个监听 80 端口的服务器,通过 proxy_pass 将请求转发到名为 myapp 的 upstream 中。这样,当用户访问 example.com 时,请求将会被 Nginx 转发到 Node.js 应用中。

配置负载均衡

如果我们有多个 Node.js 应用实例,我们可以通过 Nginx 实现负载均衡。在 upstream 代码块中,我们可以指定多个服务器地址,例如:

这里我们在 myapp upstream 中指定了三个服务器地址。Nginx 将会自动将请求转发到这三个地址之一。在 location 部分的 proxy_pass 代码中,我们不需要做任何修改。

配置 PM2

接下来,我们需要使用 PM2 来管理 Node.js 应用。首先,我们需要在服务器上安装 PM2:

然后,在 Node.js 应用的根目录下执行以下命令启动应用:

这里的 app.js 是我们的 Node.js 应用的启动文件。启动成功后,我们可以使用以下命令查看应用的状态:

如果有多个应用实例,则可以通过以下命令查看运行在哪些端口:

将 PM2 与 Nginx 配合使用

在 PM2 中启动多个应用实例后,我们需要将它们与 Nginx 配合使用。这里我们假设我们已经完成了 Nginx 的配置,并且有三个 Node.js 应用实例在运行(分别监听 3000、3001、3002 三个端口)。

在使用 PM2 启动应用时,我们可以使用以下命令将应用绑定到端口:

这里的 --name myapp 是为应用指定一个名称,方便管理。我们同样需要将其它两个应用绑定到端口 3001 和 3002。

接下来,我们需要修改 Nginx 的配置文件。在每个 server 中,我们需要将我们的应用分别绑定到不同的端口:

-- -------------------- ---- -------
-------- ----- -
    ------ ---------------
    ------ ---------------
    ------ ---------------
-

------ -
    ------ ---
    ----------- ------------

    -------- - -
        ---------------- ---- ------
        ---------------- --------- -------------
        ---------- -------------

        - ----------
        --------------------- ----
        ------------------ -----
        ------------------ -----
    -
-

在这里,我们分别将三个 Node.js 应用绑定到了 3000、3001、3002 三个端口,并在 Nginx 的配置文件中指定了相应的端口。

此外,我们还可以通过如上面示例代码中的 proxy_connect_timeout、proxy_read_timeout 和 proxy_send_timeout 来设置 Nginx 的超时时间。

总结

通过 PM2 和 Nginx 的配合,我们可以实现更加灵活、可靠、高效的 Node.js 应用管理。在实际开发中,我们需要根据实际需求来选择配置具体的参数。希望这篇文章对你有所帮助!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65aa02cfadd4f0e0ff383563

纠错
反馈