2017-11-25 2 views
0

CORS를 처리하기 위해 URI 라우팅을 활용하려는 두 개의 마이크로 서비스로 구성된 도커 작성 파일이 있습니다. 여기 내 작성 파일입니다NGINX + Docker 작성 라우팅 문제

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을 표시합니다.

답변

0

여기 내 문제가있었습니다. 라우팅은 작동했지만 내 서비스에서 404를 반환했습니다. 위치 경로가 요청과 함께 전달 되었기 때문입니다. 당신이 위치를 제거하기 위해 후행 슬래시가 필요하다는 지적 어디 그래서 내 config 파일 이런 식으로 뭔가를 찾고 결국

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; 
     } 
을 그래서 결국 나는이 대답을 발견