سؤال

كتبت خادم حدث 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 أو ما لديك (هذا مذنب أساسا). النقطة المهمة هي أنني أود Nginx قبض على خطأ 505 وإعادة توجيه الطلب إلى PHP، لذلك يمكن ل PHP التعامل مع الحدث وفقا لذلك. الخادم الخاص بي هو أساسا مجرد مركز حدث، مما يتيح العديد من المستخدمين أن يكونوا قادرين على الاتصال ومعرفة ما إذا كان هناك أي أحداث جديدة. إذا كان هناك حدث، فإن PHP يعالج توزيع الحدث، بما في ذلك الأذونات وغيرها من الأشياء المتقلبة.

المشكلة هي أن nginx لا يمر المتغيرات (أو الحصول عليها) التي تم تمريرها إلى * .eve، إلى backend.php. الآن أفترض أن هذا حسب التصميم (بسبب توجيه ERROR_PAGE)، لكنني أحسب أنه يجب أن يكون هناك طريقة لجعلها تعمل. يعمل خادمي على 9001، يعمل PHP-FPM على 9000. أي أفكار؟

هل كانت مفيدة؟

المحلول

لقد قمت بإصلاح المشكلة ببساطة إعادة بناء أحدث إصدار من nginx. التكوين، وكذلك وظيفة وإعادة توجيه الأعمال تماما. غرابة.

نصائح أخرى

يمكن لخادمك إرجاع استجابة مع رأس إعادة توجيه X-Accel لافتا عنوان URL الخلفي. في هذه الحالة، ستقدم Nginx الطلب إلى عنوان URL وإرجاع الرد مرة أخرى إلى المستخدم. لا يوجد 30 [12] إعادة توجيه، تماما كما لو طلب المستخدم عنوان URL في المقام الأول.

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-raina
جوجل لأمثلة أخرى.

هذا هو nginx محددة، ولكن الفكرة مميزة في LightTPD مع رأس X-SendFile.

لن أحسب معلمات طلب النشر التي تمر هنا. معلمات البريد المرآة في الحصول على عائد إعادة توجيه X-Accel، إذا كان بإمكان الخلفية أن تقبل ذلك. لن يتم نقل error_page بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top