Node.js 仅允许通过带有docker的nginx访问express app

Node.js 仅允许通过带有docker的nginx访问express app,node.js,docker,nginx,Node.js,Docker,Nginx,因此,目前我正在运行一个express server api,我只想在用户通过nginx代理时才允许访问该api。在我的nginx代理配置中,它有以下一行用于连接到express应用程序(请注意,我在nginx配置中有更多行用于服务其他文件): 这让我可以转到我的自定义域,例如:example.com/api/。。。。它将正确地获取请求。不过,我也可以转到server.ip。这里:3000/api/。。。它仍然可以正确地为我提供信息。我想消除人们输入服务器ip并连接到api的能力 (注意:对于实

因此,目前我正在运行一个express server api,我只想在用户通过nginx代理时才允许访问该api。在我的nginx代理配置中,它有以下一行用于连接到express应用程序(请注意,我在nginx配置中有更多行用于服务其他文件):

这让我可以转到我的自定义域,例如:example.com/api/。。。。它将正确地获取请求。不过,我也可以转到server.ip。这里:3000/api/。。。它仍然可以正确地为我提供信息。我想消除人们输入服务器ip并连接到api的能力

(注意:对于实际的express应用程序是如何设置的,我使用express generator进行了设置,并添加了一些测试api路由,以查看是否可以连接到它)

还请注意,我正在运行express应用程序,并使用docker运行nginx代理

docker compose看起来是这样的:

version: '3'
services:
  app:
    container_name: docker-express-app
    restart: always
    build: app/
    command: npm start
    ports:
      - 3000:3000

  proxy:
    container_name: nginx-proxy
    restart: always
    build: proxy/
    ports:
      - 80:80
      - 443:443
代理Dockerfile:

FROM nginx:alpine
WORKDIR /usr/src/proxy
RUN rm /etc/nginx/conf.d/*
COPY proxy.conf /etc/nginx/conf.d/
COPY views/* ./views/
FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
express app Dockerfile:

FROM nginx:alpine
WORKDIR /usr/src/proxy
RUN rm /etc/nginx/conf.d/*
COPY proxy.conf /etc/nginx/conf.d/
COPY views/* ./views/
FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
我只想确保对api的请求通过代理路由。这可能吗?

好的,我解决了我的问题

我删除了Dockerfile“EXPOSE 3000”中的行,并在docker compose中删除了定义端口的行“ports:-3000:3000”(我还将容器名称重命名为app)。然后,我在代理服务中添加了以下内容:“links:-app:app”,然后在代理中,我将代理权限更改为url,它也可以按照我的要求工作。

好,我解决了我的问题

我删除了Dockerfile“EXPOSE 3000”中的行,并在docker compose中删除了定义端口的行“ports:-3000:3000”(我还将容器名称重命名为app)。然后,我在代理服务中添加了以下内容:“links:-app:app”,然后在代理中,我将代理传递更改为url,它也可以按照我的要求工作