백엔드 사설망에서 실행되는 docker에 의해 관리되는 마이크로 서비스가 몇 개 있으며 nginx가 관리하는 동적 라우팅을 설정하여 URI를 기반으로 마이크로 서비스를 선택합니다. 여기에서 와야 문 fastcgi_pass app:9000;
에서 나는 URI에서 경로의 첫 번째 세그먼트에서 fastcgi_pass
지침의 도메인 이름을 취할 nginx를 필요Nginx는 루트 아래의 하위 폴더로 다시 작성합니다.
, 그래서 "응용 프로그램"나는 세 가지 질문을 가지고 :
https://example.com/app/foo/bar
. URI에https://example.com/another-app/foo/bar
URI가있는 경우 지시문은fastcgi_pass another-app:9000;
처럼 보일 것입니다.이 방법은 동적으로 가능합니까 아니면 모든 FastCGI 서버마다 별도의 위치를 만들어야합니까?동일한 첫 번째 URI 경로의 세그먼트에 따라 루트 아래에있는 폴더로 다시 작성해야합니다. 구성을 작성했지만 404 오류가 발생했습니다. 나는 nginx의 초보자이고 nginx와 php-fpm 컨테이너의 경로가 일치하지 않는다는 것을 알아 차렸다. 404 오류가이 사실과 관련 될 수 있습니까?
이러한 종류의 라우팅이 가능합니까 (자세한 내용은 아래 설정 참조)? 또 다른 옵션은 모든 마이크로 서비스에 대해 별도의 위치를 만드는 것이지만, 마이크로 서비스를 추가하거나 제거 할 때마다이 구성을 변경하고 싶지는 않습니다.
backend_1 | 2017/09/17 20:03:54 [error] 8#8: *1 open() "/usr/share/nginx/html/media" failed (2: No such file or directory), client: 172.25.0.1, server: localhost, request: "GET /media HTTP/1.1", host: "localhost:8082" backend_1 | 172.25.0.1 - - [17/Sep/2017:20:03:54 +0000] "GET /media HTTP/1.1" 404 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36" "-"
또 하나의 문제는 내가이되었을 수 있습니다 추측, 어떤 재 작성 로그를 볼 수 없다는 것입니다 : 여기
로그입니다 : 여기server { server_name _; root /services; #rewrite to the subfolder under root depending on the first section in the path rewrite ^/(\w+)(/|$) /$1/app_dev.php$is_args$args last; location/{ # try to serve file directly, fallback to app.php try_files $uri /app_dev.php$is_args$args; } location ~ ^/(\w+)/(app_dev|config)\.php(/|$) { #further rewrite to the /web subfolder with the front controller rewrite ^/(\w+)/(app_dev|config)\.php(/|$) /$1/web/$2.php$is_args$args break; fastcgi_pass media:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; } location ~ \.php$ { return 404; } error_log /var/log/nginx/error.log notice; access_log /var/log/nginx/access.log; rewrite_log on; }
microservice가 JSON 또는 html 형태로 회신하고 있습니까? 왜냐하면 html 서비스가 기본 URL을 기대해야하기 때문입니다. –
@TarunLalwani JSON 만 – Sergey