এনগিনেক্সে ওয়াইল্ডকার্ড vhosts


25

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

এটি হ'ল [ডিরেক্টরি] কাঠামো যা আমি চাই:

-- public_html (example.com)
---subdoamin 1 (x.example.com)
---subdomain 2 (y.example.com)

আপনি দেখতে পাচ্ছেন এটি বেশ বেসিক, তবে, আমি কেবলমাত্র একটি নতুন সাবডোমেনের জন্য একটি রেকর্ড যুক্ত করে ডোমেন যুক্ত করার সক্ষমতা চাই, যা তাত্ক্ষণিকভাবে এই নামটির সাবডিরেক্টরিটি সর্বজনীন_ html এর অধীনে নির্দেশ করবে।

ওয়েবে স্টাফ রয়েছে, তবে আমি ঠিক এর মতো কিছু পাইনি।

কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।


আপনার উদাহরণের দুটি পৃথক নাম থাকলে আপনি "একই নামের উপ-ডিরেক্টরি" বলতে কী বোঝেন তা আমি নিশ্চিত নই: subdomain 1/ x.example.com- আপনি কি স্পষ্ট করতে পারবেন?
নিকগ্রিম

সত্য, খুব পরিষ্কার দুঃখিত। আমাদের সাবডোমেন x.example.com আছে বলে যাক, এটি ডিরেক্টরিটি / পাবলিক_এইচটিএমএল / এক্স হবে তবে আমার কাছে
ডটকম.কম

উত্তর:


39

আমি আপনাকে দেখাতে হবে।

কনফিগারেশন ফাইল

server {
  server_name example.com www.example.com;
  root www/pub;
}

server {
  server_name ~^(.*)\.example\.com$ ;
  root www/pub/$1;
}

পরীক্ষা ফাইল

আমাদের দুটি পরীক্ষা ফাইল রয়েছে:

$ cat www/pub/index.html 
COMMON

$ cat www/pub/t/index.html 
T

পরীক্ষামূলক

স্ট্যাটিক সার্ভারের নাম:

$ curl -i -H 'Host: example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:42 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

$ curl -i -H 'Host: www.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:48 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

এবং সার্ভারের নাম:

$ curl -i -H 'Host: t.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:54 GMT
Content-Type: text/html
Content-Length: 2
Last-Modified: Wed, 23 Mar 2011 07:56:40 GMT
Connection: keep-alive
Accept-Ranges: bytes

T

দুর্ভাগ্যক্রমে কাজ করে না। সমস্ত সাবডোমেনগুলি কেবল সর্বজনীন_এইচটিএমএলকে নির্দেশ করে। এখানে দ্বিতীয় সার্ভার কনফিগারেশন রয়েছে:server{ listen 80; server_name ~^(.*)\.example\.com$ ; location / { root /var/www/public_html/$1; index index.html index.htm index.php; } location ~ \.php$ { root $1; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/public_html/$1$fastcgi_script_name; include fastcgi_params; } }
রোরিগিলিস্ট

4
"দুর্ভাগ্যক্রমে কাজ করে না" দুর্ভাগ্যক্রমে কোনও বিবরণ দেয় না। বিশদ জন্য সর্বদা nginx ত্রুটি.লগ দেখুন। এই কনফিগারেশনটি কীভাবে কাজ করে তা দেখানোর জন্য আমি আমার উত্তর আপডেট করেছি। আপনি দেখতে পাচ্ছেন আমার এনগিনেক্স সংস্করণটি 0.8.54
আলেকজান্ডার আজারভ

আমার জন্য এখনই নিখুঁতভাবে কাজ করেছেন।
ক্লেয়ার ফার্নি

5

নীচের এই এনগিনেক্স কনফিগারেশন ফাইলটি ওয়াইল্ডকার্ড হোস্টনামগুলির জন্য গতিশীলভাবে সম্পর্কিত ফোল্ডারে /var/www/vhost/গতিপথ প্রবর্তন করার সাথে সাথে সম্পর্কিত লগ ফাইলগুলি গতিশীলভাবে তৈরি করার অনুমতি দেয়।

http://test1.wildcard.com/var/www/vhost/test1
                                                   /var/log/nginx/test1.wildcard.com-access.log                                                    /var/log/nginx/test1.wildcard.com-error.log

http://test2.wildcard.com/var/www/vhost/test2
                                                   /var/log/nginx/test2.wildcard.com-access.log                                                    /var/log/nginx/test2.wildcard.com-error.log

wildcard.conf

server {
  listen 80;
  listen [::]:80;

  #  Match everything except dot and store in $subdomain variable
  #  Matches test1.wildcard.com, test1-demo.wildcard.com
  #  Ignores sub2.test1.wildcard.com
  server_name ~^(?<subdomain>[^.]+).wildcard.com;

  root /var/www/vhost/$subdomain;

  access_log /var/log/nginx/$host-access.log;
  error_log  /var/log/nginx/$host-error.log;
}

আপনার সমাধান ব্যাখ্যা করুন।
অ্যান্ড্রু শুলম্যান

এটি বিদ্যমান উত্তরের সাথে কার্যত অভিন্ন বলে মনে হচ্ছে। এটি কি যুক্ত করে?
মাইকেল হ্যাম্পটন

1
আরও কিছুটা সুনির্দিষ্টতা সরবরাহ করে। আশা করি এটি সকলকে সাহায্য করবে।
অ্যান্থমক্রিস

1

এইভাবে আমি এনজিঞ্জের সাথে ভার্চুয়াল হোস্টগুলি পরিচালনা করেছি :

server_name ~^(?<vhost>.*)$;
root /srv/www/$vhost;
access_log /var/log/nginx/$vhost.access.log;

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

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