2010-01-05 4 views
3

C++에서 고성능 HTTP 이벤트 서버를 작성했으며 nginx 및 PHP-FPM (fastcgi)에서 완벽하게 작동하도록하고 싶습니다. 이것은 내 nginx 구성의 스 니펫입니다. 이벤트가있는 경우nginx POST를 @fallback에 전달하지 않음

location ~ \.eve$ { 
     gzip off; 
     proxy_redirect off; 
     proxy_buffering off; 
     proxy_pass http://127.0.0.1:9001; 
     proxy_intercept_errors on; 
     error_page 505 = @fallback // this is actually BACKEND.php 
    } 

내 이벤트 서버는 505 오류를 반환 그렇지 않으면 중단, 결국 내가 JS로 처리하거나 무엇을 가지고 (이 기본적으로 혜성이다)에 "NO STATE CHANGE"지시문을 반환합니다. 요점은 nginx가 505 오류를 포착하여 PHP에 요청을 전달하여 PHP가 이벤트를 적절히 처리 할 수 ​​있기를 바란다는 점입니다. 내 서버는 기본적으로 이벤트 허브에 불과하므로 많은 사용자가 새로운 이벤트가 있는지 확인하고 연결할 수 있습니다. 이벤트가 있으면 PHP는 사용 권한 및 기타 변동 사항을 포함하여 이벤트 배포를 처리합니다.

문제는 nginx가 * .eve로 전달 된 POST (또는 GET) 변수를 BACKEND.php로 전달하지 않는다는 것입니다. 이제는 이것이 의도적으로 (error_page 지시자로 인한) 것으로 추측하지만, 그것을 작동시키는 방법이 있어야한다고 생각했습니다. 내 서버는 9001에서 실행되고, PHP-FPM은 9000에서 실행됩니다. 어떤 아이디어입니까?

답변

1

nginx의 최신 버전을 단순히 재구성하여 문제를 해결했습니다. 구성 및 POST 및 GET 전달은 완벽하게 작동합니다. 이상한.

+1

StackOverflow에는 58257 개의 "답이없는 질문"이 있습니다. 이 경우 자신의 답을 수락하면 문제 번호를 낮추는 데 도움이됩니다 (문제를 직접 해결 한 이후). –

0

서버가 백엔드 URL을 가리키는 X-Accel-Redirect 헤더로 응답을 보낼 수 있습니다. 이 경우 nginx는 url에 요청을 보내 사용자에게 응답을 반환합니다. 사용자가 처음에 URL을 요청한 것처럼 30 [12]은 리디렉션하지 않습니다.

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/
Google에 대한 다른 예입니다.

이것은 nginx에 따라 다르지만 lighttpd에서 X-Sendfile 헤더를 사용하는 것이 좋습니다.

여기서 전달하는 POST 요청 매개 변수에는 포함되지 않습니다. 백엔드가 허용 할 수있는 경우 X-Accel-Redirect의 GET 구성 요소에서 미러 POST 매개 변수가 반환됩니다 ( ). error_page는 실제로 전달되지 않습니다.

+0

요청 매개 변수가 GET 요청에 맞지 않으면 어떻게됩니까? - X-Accel-Redirect와 함께 nginx에 POST 매개 변수를 전달할 방법이 없습니까? – Hackeron

관련 문제