2011-02-24 11 views
5

nginx Connection: close शीर्षलेख को अपस्ट्रीम भेज रहा है, और इसे Connection: keep-alive शीर्षलेख के साथ बदल रहा है। क्या कोई तरीका है कि मैं इसे ओवरराइड कर सकता हूं?nginx और proxy_pass - कनेक्शन भेजें: क्लोज हेडर

http { 
    upstream main { 
    server 127.0.0.1:8000; 
    } 
    server { 
    listen 443; 
    ssl on; 
    ssl_certificate server.crt; 
    ssl_certificate_key server.key; 
    location/{ 
     proxy_pass http://main; 
    } 
    location /find { 
     proxy_pass http://main; 
     proxy_buffering off; 
    } 
    } 
}
+0

आपको nginx कॉन्फ़िगरेशन पेस्ट करें। – Zimbabao

+0

वहां आप जाते हैं :) – nornagon

उत्तर

3

keepalive_requests 0; आश्वस्त nginx स्थापना Connection: close भेजने के लिए।

1

fastcgi_finish_request() पर एक नज़र आप PHP-एफ पी एम या PHP FastCGI उपयोग कर रहे हैं ले लो:

यह सुविधा आपको कुछ php प्रश्नों के कार्यान्वयन में तेजी लाने के लिए अनुमति देता है। त्वरण संभव है जब स्क्रिप्ट निष्पादन की प्रक्रिया है जो सर्वर प्रतिक्रिया को प्रभावित नहीं करती है। उदाहरण के लिए, memcached में सत्र को सहेजने के बाद पृष्ठ बनने के बाद हो सकता है और एक वेब सर्वर को पास कर दिया गया है। fastcgi_finish_request() एक PHP सुविधा है, जो प्रतिक्रिया आउटपुट को रोकता है। वेब सर्वर तत्काल क्लाइंट को "धीरे-धीरे और उदास" प्रतिक्रिया स्थानांतरित करना शुरू कर देता है, और PHP एक ही समय में क्वेरी के संदर्भ में बहुत उपयोगी चीजें कर सकता है, जैसे सत्र सहेजना, डाउनलोड किए गए वीडियो को परिवर्तित करना, आंकड़े के सभी प्रकार से निपटने, आदि

http://php-fpm.org/wiki/Features#fastcgi_finish_request.28.29

0

एक सुरक्षित सर्वर पर keepalive को अक्षम करने से सर्वर लोड बढ़ा सकते हैं, इस दस्तावेज़ पर "HTTPS सर्वर अनुकूलन" सत्र की जाँच .. http://nginx.org/en/docs/http/configuring_https_servers.html

मैं एक छोटा keepalive_requests मान सेट करना चाहता हूं और एक keepalive_requests भी सेट कर सकता हूं

2

कनेक्शन हेडर कनेक्शन के लिए विशिष्ट है।

HTTP/1.1 कल्पना से,

कनेक्शन सामान्य हेडर फ़ील्ड इस विकल्प है कि कि विशेष रूप से कनेक्शन के लिए वांछित कर रहे हैं और नहीं आगे कनेक्शन पर प्रॉक्सी द्वारा सूचित किया जाना चाहिए निर्दिष्ट करने के लिए अनुमति देता है।

तो क्या nginx भेजता है जो अपस्ट्रीम से भेजा जा रहा है उससे स्वतंत्र है और होना चाहिए। यहां कुछ विकल्प दिए गए हैं:

keepalive_requests 0 काम करता है यदि आप कभी भी कनेक्शन का पुन: उपयोग नहीं करना चाहते हैं।

keepalive_disable ua किसी विशेष उपयोगकर्ता एजेंट के लिए काम करता है।

और this answer एक आईपी काम करता है।

0

आप NGINX पैच कर सकते हैं। उदाहरण के लिए FastCGI ले लो, src/http/modules/ngx_http_fastcgi_module.c लाइन 1977 में

if (strcmp((char *)h->key.data, "Connection") == 0 && strcmp((char *)h->value.data, "close") == 0) { 
    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "Set Connection: close"); 
    r->keepalive = 0; 
} 

जोड़ने के लिए, सही हैडर पार्सर के बाद।

संबंधित मुद्दे