使用Nginx的不同路径中的Docker容器

使用Nginx的不同路径中的Docker容器,nginx,docker-compose,Nginx,Docker Compose,我正在尝试设置Nginx将两个应用程序(Docker容器中的一个Express和一个Wordpress)路由到它们自己的公共路径。到目前为止,它一次只能处理一个容器,但从本地端口到公共路径的路由都不行,我有点不明白为什么。非常感谢任何帮助或想法 这是我的nginx配置: server { listen 80; proxy_set_header Host $http_host; proxy_set_header X-Read-IP $remote_addr; proxy_set_h

我正在尝试设置Nginx将两个应用程序(Docker容器中的一个Express和一个Wordpress)路由到它们自己的公共路径。到目前为止,它一次只能处理一个容器,但从本地端口到公共路径的路由都不行,我有点不明白为什么。非常感谢任何帮助或想法

这是我的nginx配置:

server {
  listen 80;
  proxy_set_header Host $http_host;
  proxy_set_header X-Read-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_redirect off;

  location /api {
    proxy_pass  http://0.0.0.0:3000;
  }

  location /blog {
    proxy_pass  http://0.0.0.0:8000;
  }
}
Docker compose:

version: '3.2'
services:
  api-service:
    restart: always
    depends_on:
      - wordpress-service
    image: mhart/alpine-node:latest
    build: .
    networks:
      main:
        aliases:
          - api-service
  wordpress-service:
    restart: always
    depends_on:
      - db
    image: wordpress:latest
    working_dir: /var/www/html
    volumes:
      - wordpress:/var/www/html/wp-content
    expose:
      - "8000"
    networks:
      main:
        aliases:
          - wordpress-service
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      main:
        aliases:
          - db
volumes:
  db_data:
  wordpress:
networks:
  main:

找到答案后,express应用程序中缺少的是路径的尾部斜杠

location /api/ {
  proxy_pass  http://0.0.0.0:3000/;
}
答案证明是有帮助的