Nginx কনফিগারেশনে in uri থেকে লোকেশন ব্লকটি কীভাবে সরাবেন?


16

আমার এনজিিক্স কনফ ফাইলটিতে আমার একটি পুনর্লিখন আছে যা $ ইউরি ভেরিয়েবলের অংশ হিসাবে লোকেশন ব্লকটিকে অন্তর্ভুক্ত করে বলে মনে হচ্ছে ঠিক মতো কাজ করে। আমি কেবল লোকেশন ব্লকের পরে পথ চাই। আমার বর্তমান কনফিগারেশন কোডটি হ'ল:

location /cargo {
    try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}

http://localhost/cargo/testpageপুনর্নির্দেশ কাজগুলির উদাহরণ ইউআরএল ব্যবহার করে তবে আমার পিএইচপি ফাইল দ্বারা প্রাপ্ত "_REWRITE_COMMAND" পরামিতির মান "/ কার্গো / টেস্টপেজ"। আমার লোকেশন ব্লকটি সরিয়ে ফেলতে হবে এবং কেবল $ ইউরি হিসাবে "টেস্টপেজ" রাখা উচিত

আমি নিশ্চিত যে $ uri কে বিভক্ত করার জন্য এবং একটি নতুন ভেরিয়েবলকে $ 1 $ 2 ইত্যাদি ব্যবহার করার জন্য একটি রেইগেক্স সিনট্যাক্স রয়েছে তবে আমি পুনরায় লেখার অংশ নয় এমন একটি রেজেক্স ব্যবহার করে কেবল একটি ভেরিয়েবল অ্যাসাইনমেন্ট করার কোনও উদাহরণ পাই না can't বিবৃতি। আমি ঘন্টার পর ঘন্টা সন্ধান করছি এবং চেষ্টা করে যাচ্ছি এবং শেষের এই পদক্ষেপটি পেরেছি বলে মনে হচ্ছে না।

আমি আরও জানি যে আমি এটিকে কেবল অ্যাপ্লিকেশন কোডটিতেই ছড়িয়ে দিতে পারি, তবে আমি যে কারণে এনগিন্যাক্স কনফেয়ারে এটি ঠিক করার চেষ্টা করতে চাইছি তা সামঞ্জস্যতার কারণে এটি অ্যাপাচেও চলে। আমার এটিও বলা উচিত যে আমি এটি করার একটি সত্যই হ্যাকি উপায়টি খুঁজে পেয়েছি তবে ফাইলের অস্তিত্বের জন্য যাচাই করার জন্য এটি "যদি" বিবৃতি জড়িত এবং ডকুমেন্টেশনটি সেভাবে এটি না করার জন্য বিশেষভাবে বলেছে ।

উত্তর:


18

আশেপাশে খোঁজ নিয়ে আমি অনুমান করব যে ক্যাপচারগুলির সাথে একটি রিজেক্সপ অবস্থান ব্যবহার করা সবচেয়ে সহজ iest আপনার উদাহরণটি মানিয়ে নেওয়ার সাথে আমি শেষ করি:

location ~ ^/cargo(.*) {
    try_files $1 $1/ /cargo/index.php?_REWRITE_COMMAND=$1&args;
}

আহা, এত সহজ একবার যখন কেউ আপনাকে এটি দেখায়! সঠিক স্থানে পুনরায় লেখার মূল রুট পরিচালনা করতে আমাকে কিছু ছোট ছোট সংশোধন করতে হয়েছিল। আমি এই মন্তব্যে কোনও ফরম্যাট করতে পারি না বলে আমি প্রশ্নের উত্তরটি রেখেছি। কেবলমাত্র বাকীটি হ'ল পিএইচপি ব্লকটি এখন এই অবস্থানের ব্লকের উপরে থাকতে হবে অন্যথায় একটি অসীম পুনর্নির্দেশ লুপ তৈরি করা হয়েছে (কার্গো একটি রেজেক্স হওয়ার কারণে এবং পুনঃনির্দেশিত ইউআরএলটিতে / কার্গোও রয়েছে)। নিশ্চিত না যে এটি হওয়ার থেকে রোধ করার অন্য কোনও উপায় আছে কিনা?
জেসন

আমি রেজিএক্সএক্স এবং নন-রেজিপ এক্স অবস্থানগুলির ক্রমটি পড়ার পরামর্শ দিচ্ছি। আমি সাধারণত কোনও স্থানে সমস্ত লোকেশন রিজেক্সেপ তৈরি করে ফেলি কারণ এরপরে ক্রমটি ম্যাচের নির্দিষ্টতার পরিবর্তে কনফিগার ফাইলে অর্ডার দ্বারা নির্ধারিত হয়।
থুনি

শীতল ধন্যবাদ, আমি কল্পনা করছিলাম যে উপরে / রেকর্ডগুলি / কার্গো / (index.php ব্যতীত অন্য কিছু) মেলে তবে এটি অসীম পুনর্লিখনের লুপের কারণে সার্ভার ত্রুটি রোধ করবে above
জেসন

3

আমি আমার জন্য অন্য একটি জিনিস খুঁজে পেয়েছি (যেমন আমি বন্দুকের ব্যবহার করছি, আমি কী পাস করতে পারি তা বেছে নিতে পারি না)

আপনার সাথে পালাতে সক্ষম হওয়া উচিত

location /cargo {
    rewrite ^/cargo(.*)$ $1 break;
    try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}

1

যারা নোড জেএস দিয়ে মাইক্রো পরিষেবা বা এপিআইয়ের জন্য এটি যুক্ত করতে লড়াই করছেন তাদের জন্য আমি apiআমার সার্ভারের ইউআরএল থেকে সরিয়ে দেওয়ার জন্য নিম্নলিখিতগুলি ব্যবহার করেছি:

location ^~ /api {
        rewrite ^/api(/.*)$ $1 break;
        proxy_pass    http://127.0.0.1:3001/;
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.