Pergunta

Escrevi um servidor de eventos HTTP de alto desempenho em C++ e quero fazê-lo funcionar perfeitamente com nginx e PHP-FPM (fastcgi).Este é um trecho da minha configuração do nginx.

    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
    }

Meu servidor de eventos retorna 505 erros se houver um evento, caso contrário, ele trava e, eventualmente, retorna uma diretiva "NO STATE CHANGE" que eu manipulo com JS ou o que quer que seja (isso é basicamente cometa).A questão é que eu gostaria que o nginx detectasse o erro 505 e encaminhasse essa solicitação ao PHP para que o PHP pudesse lidar com o evento de acordo.Meu servidor é basicamente apenas um hub de eventos, permitindo que muitos usuários possam se conectar e ver se há novos eventos.Se houver um evento, o PHP cuida da distribuição do evento, incluindo permissões e outras coisas voláteis.

O problema é que o nginx não está passando as variáveis ​​POST (ou GET) que foram passadas para *.eve, para BACKEND.php.Agora presumo que isso seja intencional (devido à diretiva error_page), mas imaginei que deveria haver alguma maneira de fazer isso funcionar.Meu servidor roda em 9001, PHP-FPM roda em 9000.Alguma ideia?

Foi útil?

Solução

Resolvi o problema simplesmente reconstruindo a versão mais recente do nginx.A configuração, assim como o encaminhamento POST e GET funcionam perfeitamente.Estranheza.

Outras dicas

Seu servidor pode retornar uma resposta com o cabeçalho X-Accel-Redirect apontando para um URL de backend.Nesse caso, o nginx fará a solicitação para a url e retornará a resposta ao usuário.Não há 30[12] redirecionamentos, como se o usuário tivesse solicitado o URL em primeiro lugar.

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/
Google para outros exemplos.

Isso é específico do nginx, mas a ideia é apresentada no lighttpd com o cabeçalho X-Sendfile.

Eu não contaria com parâmetros de solicitação POST passando aqui.Mirror Post Parâmetros em Get Ones of X-Acel-Redirect Return, se o seu back-end puder aceitar isso.error_page não passará de fato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top