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.