Docker-撰写:Nginx proxy_pass 我的 api

Docker-compose: Nginx proxy_pass my api

我正在尝试使用 nginx 将我的 api 代理到我的客户端,一切都已 docker 化。

我得到了我的客户端容器,它是一个简单的 angular2 客户端托管,nginx 链接到我的 api,我的 api 容器链接到我的 mongo 容器。

问题是我的 localhost:80/api 每次都是 404。

我一定是漏掉了什么....

这是我的 nginx.conf

  server {
        listen       80;


    # location /api/ {
    #     proxy_pass http://api:3000/;
    #     proxy_redirect http://api:3000/ http://localhost:80/api/;
    #     proxy_set_header Host $host;
    # }

    # location ~ /api/(?<section>.+) {
    #     proxy_pass http://api:3000/api/$section;
    #     proxy_set_header Host $host;
    # }
        location /api {
            proxy_pass         http://api:3000/api/;
            proxy_redirect     off;
            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-Host $server_name;
        }

这是我的 docker-compose

services:
  mongo:
    image: mongo
    ports:
      - "27017:27017"
  api:
    build: ./server
    ports:
      - "3000"
    volumes:
      - .:/server
    depends_on:
      - mongo
  web:
    build: ./client
    ports: 
      - "80:80"
    volumes:
      - .:/client
    depends_on:
      - api

我通过 node.js 反向代理而不是 nginx

解决了这个问题