বাহ্যিক উত্স থেকে nginx এ পুনঃনির্দেশগুলি বজায় রাখা


15

আমি আমাদের বিপণন বিভাগকে তাদের নিজস্ব পুনঃনির্দেশগুলি বজায় রাখার সুযোগ দেওয়ার মতো পরিস্থিতিতে আছি। এখন অবধি, তারা তথ্যটি তথ্য বিভাগে দিয়েছিল এবং আমরা তাদের জন্য এটি রক্ষণ করেছি nginx.conf

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

আমি দেখতে পাচ্ছি যে যে .htaccessফাইলগুলিতে আমি অ্যাক্সেস দিতে পারলাম তার জন্য কোনও এনজিনেক্স সমর্থন নেই এবং আমি এনজিনেক্সের অন্তর্ভুক্ত একটি কনফ-ফাইলের লিখিত অ্যাক্সেস না দেওয়াও পছন্দ করব। আমি প্রত্যাশা করি, আমাদের বিপণন কয়েক ঘন্টার মধ্যে আমাদের এনগিনেক্স সেটআপটি ভেঙে দেবে ...

আমাদের লোড ব্যালেন্সারের হৃদয়ে তাদের অ্যাক্সেস না দিয়ে কি কোনও নিরাপদ সম্ভাবনা রয়েছে?

উত্তর:


24

এর মতো পুনর্লিখনের কনফিগারেশনটি যথাযথভাবে বিচ্ছিন্ন করার জন্য কোনও বিল্টই নেই। আপনি নিতে পারেন তিনটি পন্থা আছে।

মানচিত্র মডিউল অন্তর্ভুক্ত

মানচিত্র মডিউল আপনাকে একটি আলাদা ফাইল থেকে ম্যাপিং অন্তর্ভুক্ত করতে পারবেন। ফাইলটি পরিবর্তনের পরে এনগিনেক্সকে পুনরায় লোড করতে হবে এবং ম্যাপিং ফাইলটি অবশ্যই সিনট্যাক্টিক্যালি সঠিক হতে হবে তবে এটি কী করা যায় তা সীমাবদ্ধ করে।

nginx.conf:

map $uri $new {
    include /etc/nginx/marketing.map;
}

server {
    ...
    if ($new) {
        rewrite ^ $new redirect;
    }
    ...
}

marketing.map:

/about  /company/about-us;
~^/people/(?<person>.*)$    /company/people/$person;

প্রাক প্রক্রিয়া কনফিগারেশন

প্রথমটি হ'ল একটি স্ক্রিপ্ট লিখুন যা আপনাকে এমন কোনও ফর্ম্যাট থেকে পুনর্নির্দেশগুলি রূপান্তর করে যা আপনি এনগিনেক্স কনফিগারেশনে সংজ্ঞায়িত করেছেন। উদাহরণস্বরূপ, স্থান পৃথক পুনঃনির্দেশগুলির একটি তালিকা দেওয়া হয়েছে:

/foo/(.*) /bar/$1

এবং একটি স্ক্রিপ্ট:

#!/bin/sh
while read SOURCE DEST; do
    echo "rewrite $SOURCE $DEST permanent;"
done < redirects.txt > redirects.conf

নিম্নলিখিত কনফিগারেশন গঠন:

rewrite /foo/(.*) /bar/$1 permanent;

তারপরে আপনি nginx -tপুনরায় লোড করার আগে এটি বৈধ কিনা তা পরীক্ষা করতে পুরো কনফিগারেশনটি চালাতে চান ।

অন ​​ফ্লাই প্রসেসিং

দ্বিতীয় বিকল্পটি হ'ল ngx_lua , ngx_perl বা ngx_js ব্যবহার করতে এবং পড়তে এবং প্রয়োগ করতে প্রক্রিয়াকরণের জন্য আপনার পুনঃনির্দেশ কনফিগারেশন নিজেই এনজিএক্স gin উদাহরণস্বরূপ, rewrite_by_luaনির্দেশিকা আপনাকে পুনরায় লেখার জন্য লুয়া কোড সম্পাদন করতে দেয় । আপনি প্রতিটি অনুরোধের জন্য কোড ব্যাখ্যায় থাকবেন তবে আপনাকে অভিনয়ের বিষয়ে সতর্কতা অবলম্বন করা উচিত।


1
পুনঃনির্দেশগুলি কনফিগার করার জন্য মানচিত্রের মডিউলটি কিছুটা সীমিত উপায় সরবরাহ করে।
এমজিওরভেন

1
মানচিত্রের পদ্ধতিটি খুব আশাব্যঞ্জক দেখাচ্ছে! সুতরাং, আমি মানচিত্র-ফাইল বজায় রাখতে একটি সাধারণ ওয়েবসাইট লেখা শুরু করব। ধন্যবাদ!
সাসাচা

2
দুঃখের বিষয়, এই মুহুর্তে (2014 পড়ন্ত) এনজিএক্স_জেএস প্রকল্পটি শেষ দুই বছর আগে স্পর্শ করা হয়েছিল। তবে এনজিএক্স_লুয়া খুব সক্রিয় এবং ভালভাবে বজায় রয়েছে।
ভিলি

এখন উপলব্ধ এনগিনস্ক্রিপ্ট (আলফা গুণমান) যা জেএসের একটি উপসেট ব্যবহার করতে দেয়।
Lifeisfoo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.