সাবডোমেনে বিভিন্ন রুট ফোল্ডার সহ একাধিক অবস্থানের সাথে এনজিনেক্স কনফিগার করুন


202

আমি আমার সার্ভারে দুটি পৃথক ফোল্ডারে একটি সাবডোমেনের ডিরেক্টরি এবং একটি সাবডোমেনের ডিরেক্টরিটির url পরিবেশন করতে চাই। আমার যে সহজ সেটআপ রয়েছে এবং এটি কাজ করছে না তা এখানে ...

server {

    index index.html index.htm;
    server_name test.example.com;

    location / {
            root /web/test.example.com/www;
    }

    location /static {
            root /web/test.example.com/static;
    }
}

এই উদাহরণে test.example.com/ইনডেক্স ফাইলটি আনতে হবে/web/test.example.com/www

এবং test.example.com/staticইনডেক্স ফাইলটি আনতে চলেছে/web/test.example.com/static

উত্তর:


238

আপনাকে এর aliasজন্য নির্দেশিকাটি ব্যবহার করতে হবে location /static:

server {

  index index.html;
  server_name test.example.com;

  root /web/test.example.com/www;

  location /static/ {
    alias /web/test.example.com/static/;
  }

}

Nginx উইকি চেয়ে আমি করতে পারেন root ও ওরফে ভাল মধ্যে পার্থক্য ব্যাখ্যা করে:

মনে রাখবেন এটি প্রথম দর্শনে মূল নির্দেশের মতো দেখাতে পারে তবে নথির রুটটি পরিবর্তন হয় না, কেবল অনুরোধের জন্য ব্যবহৃত ফাইল সিস্টেমের পথ। অনুরোধের অবস্থানের অংশটি অনুরোধটি বাতিল করা হয়েছে Nginx ইস্যুগুলিতে।

নোট করুন rootএবং aliasট্রেলিং স্ল্যাশগুলি আলাদাভাবে পরিচালনা করুন।


67
তার দরকার নেই alias। অনুগ্রহ করে, সরকারী দস্তাবেজগুলি পড়ুন , ব্যবহারকারীদের দ্বারা ভরাট করা সম্প্রদায়ের উইকিটি নয়। উদ্ধৃতি: অবস্থানটি যখন নির্দেশকের মানটির শেষ অংশটির সাথে মেলে তখন মূল নির্দেশিকাটি ব্যবহার করা ভাল
ভিবার্ট

9
এটি আমার জন্য কাজ করেছে কেবলমাত্র এটি পিছনে থাকা স্ল্যাশ অনুপস্থিত। উপন্যাসটি পড়তে হবে: ওরফে / ওয়েবে / টেস্ট.এক্সামেল / স্ট্যাটিক /;
আজমা

8
@ ভিবার্ট ডকগুলি আপনি যা বলেছিলেন তা হুবহু যা বলেছে, কিন্তু তারা সেই নির্দেশকে মোটেও ন্যায়সঙ্গত করে না - এটি একটি স্বেচ্ছাসেবী শৈলীর পছন্দ বলে মনে হয়। এর পিছনে কোন যৌক্তিক কারণ দেখছেন?
মার্ক অ্যামেরি

104

অবস্থান নির্দেশিকা সিস্টেমটি

আপনি যে সমস্ত অনুরোধ শুরু করবেন /staticএবং আপনার ডেটা উপস্থিত রয়েছে তা ফরোয়ার্ড করতে চাই/var/www/static

সুতরাং একটি সহজ পদ্ধতি সম্পূর্ণ ফোল্ডার থেকে শেষ ফোল্ডারটি পৃথক করা হয়েছে, এর অর্থ

সম্পূর্ণ পথ : /var/www/static

শেষ পথ: /static এবং প্রথম পথ:/var/www

location <lastPath> {
    root <FirstPath>;
}

সুতরাং আপনি কী ভুল করেছেন এবং আপনার সমাধানগুলি কী তা দেখতে দিন

তোমার ভুল :

location /static {
    root /web/test.example.com/static;
}

আপনার সমাধান:

location /static {
    root /web/test.example.com;
}

2
এটি আমাকে সাহায্য করেছিল: আমাকে বুঝতে পেরেছিল আমার হয় আমার ফোল্ডারটির নাম পরিবর্তন করতে হবে বা জিনিসগুলি কাজ করতে একটি সিমিলিংক সেটআপ করতে হবে।
সিজেএম

3
আপনাকে অনেক ধন্যবাদ, আমি ঠিক এইভাবে ব্যর্থ
হয়েছি

10
এটি দেখতে চাই যা করতে চাই তার স্বাধীনতার চেয়ে বরং একটি সীমাবদ্ধতার মতো দেখায়। আমি চাই যে ইউআরআইগুলি একটি নির্দিষ্ট পাথ দিয়ে শুরু করে এমন কোনও ডিরেক্টরি থেকে পরিবেশন করা হয় যাতে তার শারীরিক ফাইল পথে যে ইউআরআই পাথ থাকে না। এই সমাধানের সাহায্যে আমার নথিগুলি ডিস্কে "/ স্ট্যাটিক" দিয়ে শেষ হওয়ার পথে রাখার জন্য আমাকে বাধ্য করা হয়েছে। আমি এটা মোটেও পছন্দ করি না। আমি যেখানেই চাই ফাইলগুলি রাখার নিখুঁত এবং সম্পূর্ণ স্বাধীনতা চাই।
Szczepan Hołyszewski

48
server {

    index index.html index.htm;
    server_name test.example.com;

    location / {
        root /web/test.example.com/www;
    }

    location /static {
        root /web/test.example.com;
    }
}

http://nginx.org/r/root


2
জিজ্ঞাসা সঙ্গে ভিন্ন কি?
ট্যাংমঙ্ক

5
@ পার্থক্যটি ভাল: root /web/test.example.com;পরিবর্তে root /web/test.example.com/static;। nginx ডিরেক্টরি গাছের কাছে অবস্থান অনুসারে নির্দিষ্ট পথটিকে মানচিত্র করে এবং যেহেতু পথ এবং উত্স ডিরেক্টরি একই নামে ভাগ করে, এটি এর সাথে কাজ করে root
rmoestl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.