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;
}

… উপরের কোডটি কখনই try_filesনির্দেশিকায় পৌঁছে না বলে 404 সৃষ্টি করে তাই:

  1. এটি কি Nginx এর ifIsEvil এর সাথে সম্পর্কিত ?

  2. যদি এটি হয়, তবে http_originএকটি বিবৃতি ব্যবহার না করে পরীক্ষা করার অন্য কোনও উপায় আছে ?

আমি nginx> 1.4 (1.4.6, 1.7, 1.7.8) দিয়ে এটি চেষ্টা করেছি।


1) এটি হ'ল "যদি খারাপ হয়" উদাহরণ থেকে। 2) আপনি ব্যবহার mapবা ifঅবস্থানের বাইরে ব্যবহার করতে পারে ।
আলেক্সি টেন

@ অ্যালেক্সেইটেন, আপনি কীভাবে 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বিভিন্ন ভেরিয়েবল সহ বেশ কয়েকটি গুলি ব্যবহার করুন
অ্যালেক্সি টেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.