এনজিআইএনএক্স ব্যবহার করে কীভাবে কোনও আলাদা ডোমেইনে পুনর্নির্দেশ করবেন?


136

এনজিআইএনএক্স ব্যবহার করতে আমি কীভাবে পুনর্নির্দেশ mydomain.comএবং কোনও সাবডোমেন *.mydomain.comকরতে www.adifferentdomain.comপারি?

উত্তর:


276

SERVER_NAME সমর্থন ব্যবহার ম্যাচ প্রত্যয় .mydomain.com শব্দবিন্যাস:

server {
  server_name .mydomain.com;
  rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}

বা যে কোনও সংস্করণে 0.9.1 বা তার বেশি:

server {
  server_name .mydomain.com;
  return 301 http://www.adifferentdomain.com$request_uri;
}

1
আমার শুনতে কি কোনও বন্দরে রাখার দরকার নেই? উদাহরণস্বরূপ শোনো 80. আমার একাধিক ডোমেন রয়েছে যেগুলি আমাকে একটি প্রাথমিক ডোমেনে পুনঃনির্দেশ করা দরকার, তবে আমার সার্ভারে বিভিন্ন অন্যান্য ডোমেনের জন্য একাধিক ভার্চুয়াল সার্ভারও রয়েছে।
রায়ান

1
@ রায়ান listenনির্দেশিত নির্দিষ্ট না হলে 80 বন্দরটি ডিফল্ট হয়। এটি আসলে সাধারণের চেয়ে কিছুটা জটিল; দেখতে nginx কনফিগারেশন ডক্স আরো বিস্তারিত জানার জন্য।
ইয়েজ

2
কি ?অর্জন শেষে?
ড্যান ড্যাসকলেসকু

5
মধ্যে পার্থক্য কি rewriteএবং return 301 $scheme://www.adifferentdomain.com$request_uri;?
ড্যান ড্যাসকলেসকু

6
দ্য ? পুনর্লিখনের শেষে nginx কে মূল ক্যোয়ারী স্ট্রিং যুক্ত না করার জন্য বলে। যেহেতু $request_uriইতিমধ্যে ক্যোয়ারী স্ট্রিং রয়েছে তাই এটি আবার যুক্ত করার দরকার নেই। return 301সিনট্যাক্স নতুন, এবং দুটি পদ্ধতির মধ্যে আচরণের কোনো পার্থক্য হওয়া উচিত, কিন্তু তাই আমি নিরাপদ সিনট্যাক্স সঙ্গে গিয়েছিলাম যখন আমি প্রকৃতপক্ষে এই প্রশ্নের উত্তর অনেক ডিস্ট্রিবিউশন প্রয়োজনীয় সংস্করণ ছিল না।
কলবিজ্যাক


15

আপনি যদি করতে পারেন তবে পুনর্লিখনের মডিউলটি কেন ব্যবহার করবেন return? প্রযুক্তিগতভাবে বলতে গেলে, returnপুনর্লিখনের মডিউলটির অংশ হিসাবে আপনি এখানে পড়তে পারেন তবে এই স্নিপেটটি ইমো পড়া সহজ।

server {
    server_name  .domain.com;

    return 302 $scheme://forwarded-domain.com;
}

আপনি এটি 301 পুনর্নির্দেশও দিতে পারেন।


1
এটি কি পথ এবং ক্যোয়ারী প্যারামগুলিকে পাশাপাশি রাখবে?
এমপেন

3
এই উদাহরণটি @ মার্ক করে না। তবে আমি মনে করি আপনি পূর্ববর্তী উত্তরগুলি মিশ্রণ করতে পারেন এরকম কিছু নিয়ে:return 302 $scheme://forwarded-domain.com$request_uri;
রবিন ভ্যান বালেন

সাইড নোটে, অনেক ক্ষেত্রে, আপনার সম্ভবত স্কিম সংরক্ষণের পরিবর্তে https- এ পুনঃনির্দেশ করা উচিত (যেমন $ স্কিমের পরিবর্তে https ব্যবহার করুন)। এটি একই কারণে প্রোটোকল-আপেক্ষিক লিঙ্কগুলি এখন অবহেলিত হিসাবে
2010

@ মাহেমফ এটি সম্পূর্ণ সত্য নয়। এসএসএল নিঃসরণকারী লোডবালেন্সারের পিছনে ওয়েবসভার থাকার ক্ষেত্রে বিবেচনা করুন।
সেবাস্তিয়ান নীরা

11

এটি HTTPRewriteModule এর মাধ্যমে কাজ করা উচিত ।

Www.example.com থেকে উদাহরণ.কম-তে পুনরায় লেখার উদাহরণ:

server {    
    server_name www.example.com;    
    rewrite ^ http://example.com$request_uri? permanent; 
}

এটি কেবল www.example.com কে উদাহরণ ডটকম এ ডাইরেক্ট করছে। আমি উভয়কে একটি ভিন্ন ডোমেনে পুনর্নির্দেশ করতে চাই। আমি কি এক নিয়মে এটি করতে পারি?
দেব

আমি নিশ্চিতভাবে জানি না, তবে আমি মনে করি যে সার্ভার_নামটি mydomain.com; www.adifferencesdomain.com স্থায়ী পুনর্লিখন; আমার এটা করা উচিত? যে * .mydomain.com সব গ্রহণ করা উচিত?
udo

@ দেবে আপনি সবেই থাকতেন server_name example.com www.example.com;
citruspi

প্রশ্নটি বিশেষত কোনও সাবডোমেনকে একটি ভিন্ন ডোমেনে পুনঃনির্দেশ করতে বলে । এই উত্তর দুটির কোনওটিরই উত্তর দেয় না (স্পষ্টভাবে)।
কিসাকি

এটি গুরুত্বপূর্ণ 301 অনুপস্থিত!
স্লিক

9

আপনি যদি "domain1.com" এর জন্য অনুরোধগুলিকে "ডোমেন 2 ডটকম" এ পুনঃনির্দেশ করতে চান তবে আপনি এমন একটি সার্ভার ব্লক তৈরি করতে পারেন যা দেখতে এই রকম:

server {
    listen 80;
    server_name domain1.com;
    return 301 $scheme://domain2.com$request_uri;
}

কারও কাছে https: // অনুরোধটিও পুনর্নির্দেশের প্রয়োজন হতে পারে। listen 443;
রফিক ফরহাদ

0

অস্থায়ী পুনঃনির্দেশ

rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;

স্থায়ী পুনর্নির্দেশ

rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;

নির্দিষ্ট সাইটের জন্য এনগিনেক্স কনফিগারেশন ফাইলে:

server {    
    server_name www.example.com;
    rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;

}

0

আপনি কেবল সার্ভার}} ব্লকের ভিতরে একটি শর্ত লিখতে পারেন:

server { 

    if ($host = mydomain.com) {
        return 301 http://www.adifferentdomain.com;
    } 
}

Nginx ( nginx.com/resources/wiki/start/topics/depth/ifisevil ) এ 'if' স্টেটমেন্ট ব্যবহার করে আপনাকে সতর্কতা অবলম্বন করা উচিত । এই ক্ষেত্রে আপনি পরিবর্তে 'সার্ভার_নাম mydomain.com' ব্যবহার করতে পারেন।
মার্টি

অবস্থানের প্রসঙ্গে ব্যবহার করা হলে যদি মন্দ হয়, তবে হোস্ট পুনঃনির্দেশ করার জন্য এটি ব্যবহার করা নিরাপদ
cryptoKTM
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.