【问题标题】:NGINX + Docker Compose Routing IssuesNGINX + Docker Compose 路由问题
【发布时间】:2018-05-09 05:49:57
【问题描述】:

我有一个 docker compose 文件,其中包含两个微服务,我想利用 URI 路由来处理 CORS。这是我的撰写文件:

version: "3.1"
services:
  auth-api:
    image: xxxx/auth-api:latest
    restart: always
    depends_on:
      - "user-api"
  user-api:
    image: xxxx/user-api:latest
    restart: always
nginx:
    image: nginx
    restart: always
    ports:
      - "80:80"
    links:
      - "auth-api"
      - "user-api"
    volumes:
       - ./nginx:/etc/nginx

我想使用 NGINX 进行路由,但在尝试访问资源时遇到了 404 或 405 问题。我尝试了几种不同的配置,有一段时间 NGINX 说它在启动时找不到 api 端点,我解决了这个问题,所以我认为我的问题主要与路由配置有关。对于这些请求,我希望它是 /auth/user

worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    upstream auth-target {
      server auth-api:8080;
    }

    upstream user-target {
        server user-api:8080;
    }

    server {
        listen       80;

        location /auth {

            proxy_pass http://auth-target;

            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;
        }

        location /user {

            proxy_pass  http://user-target;

            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;
        }


    }

}

我对 NGINX 很陌生,所以我不确定我所做的是否正确。我还应该注意到,这两个 API 都将 8080 作为容器构建的一部分公开。

【问题讨论】:

    标签: nginx docker-compose uri microservices


    【解决方案1】:

    所以这是我的问题。路由工作正常,但我从我的服务返回 404。这是因为 Location 路由与请求一起传递。所以最后我找到了这个答案:

    https://serverfault.com/questions/562756/how-to-remove-the-path-with-an-nginx-proxy-pass

    它指出你需要一个斜杠才能删除该位置,所以我的配置文件最终看起来像这样:

    location /auth/ {
    
                proxy_pass http://auth-target/;
    
                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;
            }
    

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多