Docker 201:2020 年使用 NGINX 作为 NodeJS 服务器的反向代理!📦🙌(实用指南)

2025-06-04

Docker 201:2020 年使用 NGINX 作为 NodeJS 服务器的反向代理!📦🙌(实用指南)

我将跳过“什么是/为什么使用 Docker?”部分,直接进入正题!🤝

目标:我们将使用 NGINX 作为 NodeJS 服务器的反向代理。⧚

为此,我将使用来自 Docker Hub 的 2 个 Docker 镜像 - 一个用于 NodeJS,另一个用于 NGINX 🤞

让我们看看实际效果!


我已经安装了-

  • NodeJS
  • Docker

我们将创建一个简单的 Node 服务器。我们将使用httpNode 中的模块并创建一个简单的 http 服务器。server.js文件包含我们服务器的代码:

var http = require('http');

var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Node & Docker Running...");
});

server.listen(3333);

console.log("Node HTTP Server started at http://localhost:3333/");
Enter fullscreen mode Exit fullscreen mode

如果我们node server.js在终端上运行,它将在本地主机的 3333 端口启动服务器。
我们可以打开浏览器,点击“运行” http://localhost:3333/,然后可以看到服务器正在发送文本“Node & Docker Running...”
太棒了👏

现在,我们要为我们的 Node 服务器创建一个 docker 镜像。为此,我们需要Dockerfile使用以下命令创建一个名为的文件:

FROM mhart/alpine-node
COPY server.js .
EXPOSE 3333
CMD node server.js
Enter fullscreen mode Exit fullscreen mode

在这里,我使用mhart/alpine-node(最小 Node.js Docker 镜像)来构建 NodeJS 环境。

EXPOSE 3333意思是——3333端口即将被发布。

现在我们已经Dockerfile准备好了,我们将从这个文件构建一个 Docker 镜像。我们可以在终端上运行:

docker build -t docknode .
Enter fullscreen mode Exit fullscreen mode

*这里docknode是图片名称。我们可以使用任何名称。

我现在将运行docker镜像,它将为我们创建一个容器-

docker run -d -p 3333:3333 --name node-server  docknode
Enter fullscreen mode Exit fullscreen mode

我已经使用了-d它,它将有助于在后台运行容器。

运行此命令后,我们的 NodeJS 服务器应该在名为 的 Docker 容器内运行node-server
现在,如果我打开任何浏览器并点击http://localhost:3333,我们就可以看到服务器正在运行 🎉

好的,太棒了!由于 Node Docker 镜像中的 NodeJS 服务器正在运行,接下来我们需要添加 NGINX 反向代理。


我们将使用 DockerHub 上的官方 NGINX 镜像。
让我们创建一个Dockerfile

FROM nginx
COPY default.conf /etc/nginx/conf.d/
Enter fullscreen mode Exit fullscreen mode

我将创建一个名为default.confNGINX 的文件,其配置如下 -

server {
  location / {
    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_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://server:3333;
  }
}
Enter fullscreen mode Exit fullscreen mode

请注意,此处的配置中,我们有http://server:3333。这3333是来自 NodeJS Docker 容器的端口。我将server在本文后面讨论这部分。

让我们进入终端并运行-

docker build -t docknginx .
Enter fullscreen mode Exit fullscreen mode

这将为 NGINX 构建 docker 镜像。运行该命令后,我们将看到类似以下内容:

替代文本

并且,为了验证我们的图像在本地机器上可用,我们可以运行以下命令来查看列表-

docker images
Enter fullscreen mode Exit fullscreen mode

替代文本

太棒了!我们可以看到我们的两张图片都在这里了👏

由于我们的目标是让 NGINX 作为 NodeJS 服务器的反向代理。因此,当我们运行 NGINX 镜像时,我们需要将 NodeJS 服务器链接到 NGINX。

为此,我将在终端上运行以下命令-

docker run -d -p 8080:80 --link node-server:server --name nginx-proxy  docknginx
Enter fullscreen mode Exit fullscreen mode

这里,--link它帮助将我们的 NodeJS 容器链接到这个 NGINX 容器。如果你仔细检查一下,会发现我将 NodeJS 容器命名为node-server。它:server在我们的 NGINX 配置中使用。🤝

运行命令后,如果我们现在转到浏览器并点击http://localhost:8080/,我们可以看到我们的 NodeJS 应用程序现在正在此端口上运行🎉

替代文本

我们实际上是通过 NGINX 访问 NodeJS 服务器,因为它在这里充当反向代理。

太棒了🙌

希望你喜欢它。如果你还没用过 Docker,我觉得你应该在 2020 年尝试一下!

下篇文章再见。

到那时,
干杯!
👋

由于我正在尝试在网络上贡献内容,你可以给我买一杯咖啡作为我花在这些内容上的几个小时的回报❤️😊🌸
给我买杯咖啡

文章来源:https://dev.to/destrodevshow/docker-201-use-nginx-as-a-proxy-for-nodejs-server-in-2020-practical-guide-57ji
PREV
面试准备资源(前端)。
NEXT
Docker 101:2020 年与 NodeJS 一起用!📦🙌(实用指南)