সাবফোল্ডারগুলিতে এনগিনেক্স প্রজেক্ট


11

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

  • অনুরোধ থেকে 192.168.1.1/পরিবেশন করা উচিতindex.php/var/www/public/
  • অনুরোধ থেকে 192.168.1.1/wiki/পরিবেশন করা উচিতindex.php/var/www/wiki/public/
  • অনুরোধ থেকে 192.168.1.1/blog/পরিবেশন করা উচিতindex.php/var/www/blog/public/

এই প্রকল্পগুলি পিএইচপি ব্যবহার করছে এবং ফাস্টসিগি ব্যবহার করছে।

আমার বর্তমান কনফিগারেশনটি খুব ন্যূনতম।

server {
    listen 80 default;
    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    root /var/www;
    index index.php index.html;

    location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www$fastcgi_script_name;
        include fastcgi_params;
    }
}

আমি বিভিন্ন জিনিস দিয়ে চেষ্টা করেছি aliasএবং rewriteতবে ফাস্টসিগির জন্য জিনিসগুলি সঠিকভাবে সেট করতে সক্ষম হয়েছি। মনে হচ্ছে অবস্থান ব্লক লেখা এবং অনুরূপ বেশি বাক্যবাগীশ উপায় সেখানে উচিত root, index, SCRIPT_FILENAME, ইত্যাদি

আমাকে সঠিক দিকে নিয়ে যাওয়ার জন্য যে কোনও পয়েন্টার প্রশংসিত হয়।


কৌতূহলের বাইরে, আপনি কোন URL /var/www/public/wiki/foo.html এ কোনও ফাইল অ্যাক্সেস করতে পারবেন বলে আশা করবেন?
নাটাচাদো

এটি একটি ভাল পয়েন্ট, নাটাচাদো। মূল পাবলিক ডিরেক্টরিটি কেবল কয়েকটি বিবিধ ফাইল হবে এবং যাইহোক সত্যিই কখনও ব্যবহার করা উচিত নয়। এটি একটি অভ্যন্তরীণ সেটআপ তাই আমার এটির নিয়ন্ত্রণ থাকবে। আশা করি আমাদের এটি খুঁজে বের করতে হবে না :)
তীমথিয়

উত্তর:


16

যেহেতু আপনার প্রকল্পগুলি একই রুটে নেই, আপনাকে অবশ্যই এটির জন্য একাধিক অবস্থান ব্যবহার করতে হবে

location /wiki {
    root /var/www/wiki/public;
}

location ~ /wiki/.+\.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME /var/www/wiki/public$fastcgi_script_name;
}

location /blog {
    root /var/www/blog/public;
}

location ~ /blog/.+\.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME /var/www/blog/public$fastcgi_script_name;
}

এছাড়াও, আপনার ফাস্টসিগি_প্রেমস ফাইলটিতে ফাস্টসিগি_আইনডেক্স রাখুন এবং এটি সার্ভার স্তরে অন্তর্ভুক্ত করুন, এইভাবে আপনি আপনার পিএইচপি লোকেশনগুলি যতটা সম্ভব ছোট রাখুন।


1
এটি ঠিক সেই ধরণের কনফিগারেশনটি আমি এড়াতে আশা করছিলাম ... নকল। হায় আফসোস, যদি এটি "সঠিক" হয় তবে তার চেয়ে আমি কী করব। আপনার সহায়তার জন্য ধন্যবাদ, মার্টিন!
টিমোথি

7

অবস্থান + উপকরণ অনুসারে সমাধান করুন:


location / {
   root /var/www/public;
   index index.php;
}
location /blog/ {
   alias /var/www/blog/public/;
   index index.php;
}
location /wiki/ {
   alias /var/www/wiki/public/;
   index index.php;
}

location ~ \.php$ {
   #your fastcgi configuration here 
}


0

এখানে কি আমি চেষ্টা করেছি, আরো বিস্তারিত জানার হয় http://programmersjunk.blogspot.com/2013/11/nginx-multiple-sites-in-subdirectories.html

    location /Site1/ {
            root /usr/share/nginx/www/Site1;
           try_files $uri $uri/ /index.php?$query_string;
    }

    # the images need a seperate entry as we dont want to concatenate that with index.php      
    location ~ /Site1/.+\.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
            root /usr/share/nginx/www/Site1;
    }
    # pass the PHP scripts to FastCGI server
    location ~ /Site1/.+\.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            allow 127.0.0.1;
    #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    #       # With php5-fpm:
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
    }

location /Site3/ {
            root    /usr/share/nginx/www/Site3;
    }

    # pass the PHP scripts to FastCGI server
    location ~ /Site3/.+\.php$ {
            allow 127.0.0.1;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
            #we are directly using the $request_filename as its a single php script
            fastcgi_param SCRIPT_FILENAME $request_filename;
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.