2014-07-18 2 views
0

우리는 이제 Java로 마이그레이션하는 기존 응용 프로그램을 php로 작성했습니다. 응용 프로그램이 작동 중이므로 일부 기능을 이전하려고합니다. 이를 염두에두고 시나리오를 유지 , 나는 $ 형식 = "CSV는"빠른 CGI를 사용하는 경우 예를 들어 에 대한 쿼리 문자열 인수Nginx : 인수 값을 기준으로 다른 백엔드를 사용하십시오.

의 값에 따라 PHP-FPM 백엔드와 자바 응용 프로그램 사이의 트래픽을 분할해야하고 PHP를 사용하여 프로세스 요청 $ format = "xml"인 경우 proxy_pass 지시문을 사용하여 Java 백엔드에 연결하십시오.

불행히도 nginx에서이 작업을 수행하는 것이 어렵다는 것을 알고 있습니다.

나는 다음과 같은

if ($args_format ="csv") 
include php; 
if ($args_format ="xml") 
include proxy; 

여기에 PHP와 프록시가 나는지도로를 만들

그런 다음 proxy_pass 및 빠른 CGI 관련 문

불행하게도이 구문 오류가 발생을 포함하는 파일입니다 시도

map $args_output $provider { 
    default "proxy"; 
    csv  "php"; 
} 

과 같은 것을 사용합니다.에는 $ provider;

nginx가 각 호출을 실행하는 동안이 아니라 시작 시간에 포함을로드하는 것처럼 보이기 때문에 이는 또한 실패합니다.

내가 우아한 방식으로이를 달성 할 수있는 방법에 대한 제안.

답변

0

변수 이름은 if 문 후에는 {} 사용해야합니다 $

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_

arg_format입니다. 우리가 포함 동안 condition.If 런타임에 실행되는 경우는 내부에 포함 할 수 없습니다 http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if

시도 뭔가 같은 ...

if ($arg_format ="csv") { 
include php; 
} 
if ($arg_format ="xml") { 
include proxy; 
} 
+0

는 설정 파일이 해석되는 경우, 일어날 것으로 보인다. –

관련 문제