nginx non inoltro POST a @fallback
-
18-09-2019 - |
Domanda
Ho scritto un server di eventi HTTP ad alte prestazioni in C ++ e voglio farlo funzionare perfettamente con nginx e PHP-FPM (FastCGI). Si tratta di un frammento della mia configurazione 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
}
Il mio server di eventi restituisce 505 errori se c'è un evento, altrimenti si blocca, e, infine, restituisce una direttiva "Nessuno Stato CHANGE" che mi occupo con JS o quello che hai (questo è fondamentalmente la cometa). Il punto è che vorrei nginx per catturare l'errore 505 e trasmettere la richiesta PHP in modo da PHP in grado di gestire l'evento di conseguenza. Il mio server è fondamentalmente solo un hub evento, permettendo a molti molti utenti siano in grado di connettersi e vedere se ci sono nuovi eventi. Se c'è un evento, PHP gestisce la distribuzione eventi, incluse le autorizzazioni e altre cose volatili.
Il problema è che nginx non passa il POST (o GET) le variabili che sono stati passati a * .eve, a backend.php. Ora Presumo che questo è di progettazione (a causa della direttiva error_page), ma ho pensato che ci deve essere un modo per farlo funzionare. Il mio server gira su 9001, PHP-FPM gira su 9000. Tutte le idee?
Soluzione
Ho risolto il problema semplicemente ricostruendo la versione più recente di nginx. La configurazione, così come il POST e GET inoltro funziona perfettamente. Stranezze.
Altri suggerimenti
Il server può restituire una risposta con l'intestazione X-Accel-Redirect indicando un URL backend. In questo caso nginx farà la richiesta all'URL e restituire la risposta indietro per l'utente. No 30 [12] reindirizza, proprio come se l'utente ha richiesto l'URL, in primo luogo.
http://kovyrin.net/ 2006/11/01 / nginx-x-Accel-reindirizzamento-php-rails /
Google per altri esempi.
Questa è nginx specifica, ma l'idea è anche su lighttpd con l'intestazione X-Sendfile.
Io non ci conterei POST parametri della richiesta di passaggio qui. parametri specchio POST in GET quelli di X-Accel-reindirizzamento ritorno, se il back-end può accettare che. error_page non passerà alcuna davvero.