nginx @ çare için POST iletemediğim

2 Cevap php

Ben C + + yüksek performanslı bir HTTP sunucusu olay yazdı ve ben nginx ve PHP-FPM (fastcgi) ile kusursuz çalışması yapmak istiyorum. Bu benim nginx yapılandırma snippet'idir.

    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
    }

Bir olay olduğunda eğer benim etkinlik sunucusu aksi takdirde kilitleniyor, ve sonunda bir "HAYIR DEVLET DEĞİŞİKLİĞİ" Ben JS ile idare yönergesi ya da ne var (bu temelde bir kuyruklu yıldız) döndürür, 505 hataları döndürür. Nokta ben 505 hata yakalamak ve PHP buna göre olay işleyebilir böylece PHP bu talebi iletmek için nginx istiyorum olmasıdır. Benim sunucu birçok birçok kullanıcıların bağlantı ve herhangi bir yeni olay var olmadığını görmek mümkün olmasını sağlayan, temelde sadece bir olay merkezidir. Bir olay varsa, PHP izinleri ve diğer uçucu şeyler de dahil olmak üzere olay dağılımını, kolları.

Sorun nginx BACKEND.php için, POST geçen (veya vermek) için değişkenler * geçirildi. Eve olmasıdır. Şimdi bu (nedeniyle error_page direktife) tasarım olduğunu tahmin, ama o iş yapabilmenin bir yolu olması gerektiğini düşündüm. Benim sunucu 9001 üzerinde çalışan, PHP-FPM 9000 üzerinde çalışır. Herhangi bir fikir?

2 Cevap

Ben sadece nginx en son sürümünü yeniden inşa ederek sorunu giderildi. Yapılandırma yanı sıra, POST ve yönlendirme GET mükemmel çalışır. Garabeti.

Your server can return a response with X-Accel-Redirect header pointing a backend url. In this case nginx will make the request to the url and return the response back to the user. No 30[12] redirects, just as if user requested the url in the first place.

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/
Google for other examples.

Bu nginx özgü, ancak fikir X-SendFile başlığı ile lighttpd özellikli.

I would not count on POST request parameters passing here. Mirror POST parameters in GET ones of X-Accel-Redirect return, if your backend can accept that. error_page won't pass any indeed.