यदि बैकएंड डाउन है तो नगनेक्स प्रॉक्सी कैश का उपयोग करें


11

यदि बैकएंड सर्वर डाउन हो तो मुझे नगीन प्रॉक्सी उपयोग कैश की जरूरत है:

यह मेरा विन्यास है। लेकिन लगता है कि चेक बैकएंड सर्वर के बिना नगनेक्स कैश का उपयोग करें।

http {

  # ...

  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_cache_path /tmp/nginx levels=1:2 keys_zone=tmpzone:10m inactive=60m;
  proxy_cache_key "$scheme$request_method$host$request_uri";


  server {
    server_name _;

    location / {
      proxy_connect_timeout 5s;
      proxy_read_timeout 5s;
      proxy_cache tmpzone;
      proxy_cache_valid      200 304 1d;
      proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;
      proxy_set_header X-Real-IP  $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host 'www.example.com';
      proxy_pass http://www.example.com;
    }
  }
}

सवाल यह है कि बैकएंड सर्वर अप होने पर मैं प्रॉक्सी कैश को कैसे बायपास कर सकता हूं? और जब बैकएंड सर्वर मेरे प्रॉक्सी सर्वर पर है तो कैश का उपयोग बिल्कुल न करें।


वास्तव में सवाल क्या है?
जेनी डी

सवाल यह है कि बैकएंड सर्वर अप होने पर मैं प्रॉक्सी कैश को कैसे बायपास कर सकता हूं?
स्व

बॉक्स समाधान में से एक में 2 "सर्वर" चल सकते हैं, एक कैश के साथ, एक डब्ल्यू / ओ कैश, और अपस्ट्रीम मॉड्यूल का उपयोग करें nginx.org/en/docs/http/ngx_http_upstream_molule.html ? सबसे अच्छा समाधान शायद एक चेक के साथ प्रॉक्सी_केचे_बिपास का उपयोग करने में सक्षम हो सकता है अगर बैकएंड है या नहीं ... हालांकि मुझे नहीं पता कि उस काम को कैसे प्राप्त किया जाए ... दिलचस्प मामला।
स्वेनड

XY प्रॉब्लम के इस उदाहरण का समाधान SO
Dayo

जवाबों:


8

इसका एक डुप्लिकेट लगता है:

/programming/16756271/how-to-configure-nginx-to-serve-cached-content-only-when-backend-is-down-5xx-re

संक्षेप में, प्रॉक्सी_कैश_यूज़_स्टेल का उपयोग करें

अद्यतन के रूप में, मैंने इसका परीक्षण किया और यह ठीक काम करता है। मैंने अपने कार्य केंद्र में परीक्षण किया, जहां मेरे पास (पूर्णता के लिए) है:

Fedora 23 nginx 1.8.1 ssl टर्मिनेटर + कैश के रूप में कॉन्फ़िगर किया गया है। रिवर्स प्रॉक्सी Apache 2.4.18 पोर्ट 80 पर सुनने के लिए कॉन्फ़िगर किया गया है

अपस्ट्रीम में अपस्ट्रीम के रूप में अभिनय करने के साथ, केवल एक स्थिर फ़ाइल की सेवा जो मैंने यह परीक्षण किया:

  1. Apache up, nginx up, ब्राउज़र को इंगित करते हुए उल्टे प्रॉक्सी URL को nginx द्वारा परोसा जाता है, जिसे मैं Apache से अनुमानित सामग्री देखता हूँ। इस बिंदु पर nginx इसे कैश पर रखता है।
  2. रुक गई अपाचे
  3. nginx से कनेक्टेड मैं अपाचे द्वारा पहले सेवा के रूप में कैश्ड फ़ाइल देखता हूं।

मैंने जो nginx config का उपयोग किया है (केवल दिलचस्प भाग):

nginx.conf:

http {
[...]
location
    proxy_cache_path        /var/lib/nginx/tmp/proxy/ levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
    include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/local.conf:

upstream localhost {
    server 127.0.0.1:80;
[...]
}


server {
    listen       127.0.0.1:443 ssl;

[...]

    location /be/ {
        proxy_pass              http://localhost;
        proxy_cache             STATIC;
        proxy_cache_valid       200 1d;
        proxy_cache_use_stale   error;
}

काम नहीं यह कोशिश करो।
फ्राई

मामले में आपको नगनेक्स टीम को बग की सूचना देनी चाहिए। आपने btw की क्या कोशिश की? मामले में मैं इसे पुन: पेश करने की कोशिश करूँगा
फ्रेडी

ठीक है, मैंने एक परीक्षण किया और यह ठीक काम किया। परीक्षण विवरण के साथ मेरे उत्तर को अपडेट किया।
फ्रेडी

तो स्वैब के मूल प्रश्न के बारे में मेरा पढ़ना यह था कि अपाचे और नगनेक्स दोनों की स्थिति में, सभी अनुरोधों को अपाचे बैकेंड से गुजरना चाहिए। अनुरोध केवल NginX कैश से सेवा की जानी चाहिए अगर अपाचे नीचे है
abhishekmukherg

@abhishekmukherg, आप जो कहते हैं वह कर सकते हैं, लेकिन क्यों? जब दोनों उठ रहे हैं और फाइलें स्थिर हैं (सोचिए jpg / css / html) जब आप एक वास्तविक दृश्यपटल रखते हैं तो अधिक नेटवर्क / सीपीयू / ecc संसाधनों का उपयोग करके बैकएंड में क्यों जा रहे हैं? BTW यह एक और सवाल के लिए मामला है
फ्रेडी

0

किसी कैशिंग सक्षम किए गए सर्वर पर प्रॉक्सी_डेनसेप्ट_रियर्स और प्रॉक्सी 500s का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.