首页 > 解决方案 > 使用 nginx 为在 node.js+mongodb+basic Html 和 Docker 中的 CSS 上运行的 Web 应用程序设置反向代理=> 不工作

问题描述

我想使用反向代理在公共 IP 地址上为我的网站提供服务。但是当我访问该地址时,我得到的只是默认的 nginx 页面。这是 docker-compose.yml 文件:

version: "3"
services:
  app:
    container_name: visualization_app
    restart: always
    build: .
    volumes:
      - .:/usr/src/app
    ports:
      - "4000:4000"
    links:
      - database
  database:
    container_name: mongo
    image: mongo
    ports:
      - "27011:27017"
  proxy:
    image: nginx:1.17
    restart: unless-stopped
    ports:
      - "8000:80"
    volumes:
      - ../nginx_conf/default.conf:/etc/nginx/conf.d/default.conf
      - ./public:/srv/www/static
    depends_on:
      - app

这是我的 nginx 配置文件:

server{
    listen 80;
    root /srv/www/static;
    location / {
        proxy_pass          http://localhost:4000;
        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 http;
        proxy_set_header    Host    $http_host;
        client_max_body_size 17m;
        proxy_http_version  1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header    Connection "upgrade";
    }
}

这是Dockerfile:

FROM node:latest as build-stage
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
CMD ["server.js","store.js"]

自 3 天以来,我一直在尝试配置此设置,但似乎没有任何效果。请任何帮助将不胜感激。

标签: node.jsdockernginx

解决方案


您的代理通行证需要指向应用程序的主机。尝试:

proxy_pass          http://app:4000;

推荐阅读