2011-10-24 20 views
11

मैं प्रॉक्सी के लिए nginx कॉन्फ़िगर करने के लिए किसी अन्य सर्वर को यह अनुरोध भेज कोशिश कर रहा हूँ, केवल तभी $ request_body चर एक विशिष्ट नियमित अभिव्यक्ति पर मेल खाता है।nginx सशर्त प्रॉक्सी पास

मेरे समस्या अब है, कि मैं वास्तव में इस व्यवहार को कॉन्फ़िगर कैसे नहीं है।

मैं वर्तमान में यह एक करने के लिए नीचे हूँ:

server { 
    listen 80 default; 
    server_name test.local; 

    location/{ 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_set_header Host $http_host; 

      if ($request_body ~* ^(.*)\.test) { 
        proxy_pass http://www.google.de; 
      } 

      root /srv/http; 
    } 

} 

लेकिन समस्या यह यहाँ है, कि जड़ हमेशा upperhand है। प्रॉक्सी किसी भी तरह से पारित नहीं किया जाएगा।

इस बारे में कोई विचार है कि मैं इसे कैसे पूरा कर सकता हूं? अग्रिम

+0

क्या आप वाकई 'regexp के खिलाफ जांच करने के लिए $ request_body' चाहते हैं? यह एक्स बार इसके अलावा के लिए अपना एप्लिकेशन धीमी हो जाएगी आप 'proxy_pass' क्या करना चाहते हैं या सिर्फ' redirect'? – user973254

+0

हाँ, मेरे पास कोई अन्य विकल्प नहीं है, दुर्भाग्यवश, और मुझे वास्तव में प्रॉक्सी पास करने की आवश्यकता है, एप्लिकेशन रीडायरेक्ट नहीं कर सकता (xml-rpc क्लाइंट) – sharpner

+0

लेकिन अब समस्या क्या है? काम नहीं कर रहा है लॉग में क्या है? – user973254

उत्तर

15

में

धन्यवाद इस प्रयास करें:

server { 
    listen 80 default; 
    server_name test.local; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $http_host; 

     if ($request_body ~* ^(.*)\.test) { 
      proxy_pass http://www.google.de; 
      break; 
     } 

     root /srv/http; 
    } 

} 
+0

thx आदमी, आपने मुझे बहुत समय और सिरदर्द बचाया, मुझे खुशी है कि समाधान यह आसान था: डी बहुत सराहना की! – sharpner

+0

एनपी, आपका स्वागत है :) – user973254

+0

@sharpner क्या यह विधि अभी भी काम करती है? यह मेरे परीक्षण में प्रकट नहीं होता है। – robbles

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