Вопрос

Я написал высокопроизводительный HTTP-сервер событий на C ++, и я хочу заставить его безупречно работать с nginx и PHP-FPM (fastcgi).Это фрагмент моей конфигурации 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
    }

Мой сервер событий возвращает 505 ошибок, если есть событие, в противном случае он зависает и в конечном итоге возвращает директиву "БЕЗ ИЗМЕНЕНИЯ СОСТОЯНИЯ", которую я обрабатываю с помощью JS или того, что у вас есть (это в основном comet).Дело в том, что я хотел бы, чтобы nginx перехватил ошибку 505 и переслал этот запрос в PHP, чтобы PHP мог соответствующим образом обработать событие.Мой сервер, по сути, просто концентратор событий, позволяющий многим пользователям подключаться и видеть, есть ли какие-либо новые события.Если происходит событие, PHP обрабатывает распределение событий, включая разрешения и другие изменчивые параметры.

Проблема в том, что nginx не передает переменные POST (или GET), которые были переданы в *.eve, в BACKEND.php .Теперь я предполагаю, что это сделано специально (из-за директивы error_page), но я подумал, что должен быть какой-то способ заставить это работать.Мой сервер работает на 9001, PHP-FPM работает на 9000.Есть какие-нибудь идеи?

Это было полезно?

Решение

Я исправил проблему, просто восстановив самую последнюю версию Nginx. Конфигурация, а также сообщение и обход перенаправления работает отлично. Странность.

Другие советы

Ваш сервер может вернуть ответ с заголовком X-Accel-Redirect, указывающим на внутренний URL.В этом случае nginx отправит запрос по URL-адресу и вернет ответ обратно пользователю.Никаких 30 [12] перенаправлений, как если бы пользователь изначально запросил URL-адрес.

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/
Погуглите другие примеры.

Это специфично для nginx, но идея представлена в lighttpd с заголовком X-Sendfile .

Я бы не стал рассчитывать на передачу здесь параметров POST-запроса.Зеркально ОТОБРАЗИТЕ параметры POST в GET из X-Accel-Redirect return, если ваш серверный сервер может это принять.error_page действительно ничего не передаст.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top