nginx यदि स्थान के अंदर विवरण 404 देता है


11

निम्नलिखित ब्लॉक

location / {
    if ($http_origin ~* (https?://[^/]*\.example\.com(:[0-9]+)?)) {
        add_header 'Access-Control-Allow-Origin' "$http_origin";
    }
    try_files $uri $uri/ /index.php?$args;
}

... एक 404 का कारण बनता है क्योंकि उपरोक्त कोड कभी भी try_filesनिर्देश तक नहीं पहुंचता है , इसलिए:

  1. क्या यह नगीने की इफिसाइल से संबंधित है ?

  2. यदि यह है, तो क्या किसी http_originकथन का उपयोग न करके परीक्षण करने का कोई और तरीका है ?

मैंने यह nginx> 1.4 (1.4.6, 1.7, 1.7.8) के साथ आजमाया है।


1) यह बिल्कुल "अगर बुराई है" उदाहरणों से है। 2) आप स्थान के बाहर का उपयोग mapया उपयोग कर सकते हैं if।
— एलेक्सी टेन

@AlexeyTen, क्या आप ifस्थान ब्लॉक के बाहर उपयोग करने के लिए एक उदाहरण प्रदान कर सकते हैं ?
— एलिरन मलका सेप '

जवाबों:


19

मैं उपयोग करेगा map:

map $http_origin $cors_header {
    default "";
    "~^https?://[^/]+\.example\.com(:[0-9]+)?$" "$http_origin";
}

server {
    ...
    location / {
        add_header Access-Control-Allow-Origin $cors_header;
        try_files $uri $uri/ /index.php;
    }
    ...
 }

क्या होगा यदि अनुमत मूल को प्रत्येक सर्वर के लिए अलग होना चाहिए?
— क्रिस मार्टिन

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