nginx no reenviar POST para @fallback
-
18-09-2019 - |
Pregunta
escribí un servidor HTTP evento de alto rendimiento en C ++ y quiero hacer que funcione sin problemas con nginx y PHP-FPM (fastcgi). Este es un fragmento de mi configuración de 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
}
Mi servidor de eventos devuelve 505 errores si hay un evento, de lo contrario, se cuelga, y finalmente devuelve una directiva "NO CAMBIO DEL ESTADO" que manejo con JS o lo que sea (esto es básicamente un cometa). La cuestión es que me gustaría nginx para detectar el error 505 y trasladar dicha solicitud a PHP PHP por lo que puede controlar el evento en consecuencia. Mi servidor es básicamente un centro de eventos, permitiendo que muchos muchos usuarios puedan conectarse y ver si hay nuevos eventos. Si hay un evento, PHP se encarga de la distribución de eventos, incluidos los permisos y otras cosas volátil.
El problema es que nginx no está pasando el POST (o GET) las variables que se han pasado a * .EVE, a backend.php. Ahora supongo que esto es por diseño (debido a la directiva error_page), pero me di cuenta de que tiene que haber alguna manera de hacer que funcione. Mi servidor se ejecuta en 9001, PHP-FPM se ejecuta en 9000. ¿Alguna idea?
Solución
He arreglado el problema simplemente la reconstrucción de la versión más reciente de nginx. La configuración, así como la POST y GET reenvío funciona perfectamente. Rareza.
Otros consejos
El servidor puede devolver una respuesta con la cabecera X-Accel-redirección apuntando hacia una dirección URL de servidor. En este caso nginx hará la solicitud a la URL y devolver la respuesta de vuelta al usuario. N ° 30 [12] vuelve a dirigir, al igual que si el usuario solicita la dirección URL en el primer lugar.
http://kovyrin.net/ 2006/11/01 / nginx-x-Accel-redirección-php-rieles /
Google para otros ejemplos.
Este es nginx específica, pero la idea se presenta en lighttpd con cabecera X-Sendfile.
Yo no contaría con los parámetros de petición POST que pasan aquí. Espejo parámetros de Correos en los GET de retorno X-Accel-redirección, si su back-end puede aceptar eso. error_page no pasará ningún hecho.