আমি কীভাবে একই সার্ভারে একটি পৃথক বন্দরে সাব-ডোমেনগুলি পুনর্নির্দেশ করব?


67

আমার কয়েকটি সাবডোমেন রয়েছে যা আমি একই সার্ভারে নির্দিষ্ট পোর্টে পুনঃনির্দেশ করতে চাই। বলুন আমার আছে

dev.mydomain.com 

আমি dev.mydomain.comস্বচ্ছভাবে পুনঃনির্দেশ করতে mydomain.com:8080চাই এবং আমি ব্রাউজারের মূল সাব-ডোমেন নামটি সংরক্ষণ করতে চাই।

আমি কিভাবে অ্যাপাচি ২.২ এর সাথে এটি করব? আমার অ্যাপাচি ২.২ ডিফল্ট পোর্টে চলছে 80। এটি হওয়ার জন্য আমি লেখার কনফিগারেশনটি বের করতে পারি না।

আমি dev.mydomain.comডিএনএস-এ সমাধান করার জন্য ইতিমধ্যে সেট আপ করেছি mydomain.com

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

উত্তর:


69

সমাধান

মাইলস ইরিকসন দ্বারা সঠিক পথে সেট করার পরে অবশেষে আমি এখানে এসেছি। আমি চাইছিলাম যে ঠিকানা বারটি অনুরোধের মূল সাবডোমেন / ডোমেনটি প্রতিবিম্বিত করবে এবং পুনর্নির্দেশকৃত সার্ভার এবং পোর্টটি নয়, তবে তিনি আমাকে গুগলের সঠিক সমাধানে একটি সমাধান ব্যবহার করেছেন VirtualHostএবং আমি অবশেষে একটি সমাধান পেয়েছি যাতে এর ব্যবহার অন্তর্ভুক্ত রয়েছে mod_proxy

<VirtualHost *:80>
    ServerAdmin me@mydomain.com
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>

7
যার জন্য এই উত্তরটি কার্যকর হয়নি, তাদের মনে রাখবেন যে আপনার mod_proxyপাশাপাশি মোডগুলি সক্ষম করতে হবে proxy_http
matewka

9

অনুমান করে যে dev.mydomain.com মাইডোমেন.কমের আইপি-তে সমাধান করা যায়, আপনি নিম্নলিখিতটি আপনার httpd.conf এ যুক্ত করতে পারেন:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

প্রাসঙ্গিক অ্যাপাচি ডকুমেন্টেশন:

  1. নাম ভিত্তিক ভার্চুয়াল হোস্টগুলি তৈরি করার জন্য গাইড
  2. ভার্চুয়ালহোস্ট এবং নেম ভার্চুয়ালহোস্ট সহ কোর
  3. পুনঃনির্দেশ

সম্পর্কিত প্রশ্ন: অ্যাপাচি হোস্ট নেম ভিত্তিতে পুনঃনির্দেশ

(দ্রষ্টব্য: এই উত্তরের মূল সংস্করণটি ভুলভাবে RedirectMatch ব্যবহারের পরামর্শ দিয়েছে, যা @ ক্রিসস সহায়তার সাথে উল্লেখ করেছে, URL এর ডোমেন অংশটি পার্স করতে পারে না))


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

1
অন্যান্য অসংখ্য পরামর্শ পেয়েছে তবে শেষ পর্যন্ত এটি আমার জন্য উইন্ডোজ সার্ভার ২০০৮ আর ২ / অ্যাপাচি ২.২.২৫ এ কাজ করেছে।
এইচপিডাব্লুডি

1
এই সমাধানটির সাথে সমস্যাটি হ'ল আপনার ভাইতে, আপনি প্রথম ডোমেনে থাকেন না, আপনি দ্বিতীয় থেকে 302 পান।
প্লিমার

7

টার্মিনালে নিম্নলিখিত লাইনটি চালান (আপনার ডোমেন এবং সাব ডোমেনের নামটি সঠিকভাবে নির্দিষ্ট করুন)

sudo nano /etc/apache2/sites-available/subdomain.example.com.conf 

নিম্নলিখিত কোডটি আটকান এবং আপনার প্রয়োজন হিসাবে পরিবর্তন করুন

<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName subdomain.example.com
        ServerAlias subdomain.example.com
        ProxyRequests Off

        #ProxyPass / http://localhost:8080/
        <Location />
                ProxyPreserveHost On
                ProxyPass http://example.com:8080/
                ProxyPassReverse http://example.com:8080/
        </Location>
     # Uncomment the line below if your site uses SSL.
     #SSLProxyEngine On
</VirtualHost>

টার্মিনালে নিম্নলিখিত লাইনগুলি চালান (আপনার ডোমেন এবং সাব ডোমেনের নামটি সঠিকভাবে নির্দিষ্ট করুন)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart

3
এটি এবং গৃহীত উত্তরের মধ্যে কি কোনও প্রয়োজনীয় পার্থক্য রয়েছে?
কাস্পারড

1
বেশিরভাগ লোকেরা যুক্ত করতে ভুলে যায় sudo a2enmod proxy_httpযাতে তারা সঠিকভাবে চলতে অসুবিধার মুখোমুখি হন। আরও যথাযথভাবে সহায়তা করার জন্য আমি ক্রমানুসারে শুরু থেকে শেষ পর্যন্ত পুরো প্রক্রিয়া দেওয়ার চেষ্টা করি। আপনার প্রশ্নের জন্য ধন্যবাদ।
ম্যাক রিপন

1
"ProxyRequests বন্ধ" উল্লেখ করার কারণে +1
সেবাস্তিয়ান

1
এটি কেবল আমার পক্ষে কাজ করে না। 'sudo a2enmod subdomain.domain.com.conf' বলছে "ERROR: মডিউল xyz বিদ্যমান নেই!" এটি কি 'ডিফল্ট' কনফিগারেশনে উল্লেখ করতে হবে?
ডার্ক শুমাচর

2
সাবডোমেন নিবন্ধকরণে সংশোধন sudo a2ensite sub.yourdomain.com
আলী আজহার

5

আপনার মূল ভোস্ট কনফিগারেশনে নিম্নলিখিত লাইনগুলি যুক্ত করুন:

ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/

নোট করুন যে এর জন্য অ্যাপাচিতে Mod_proxy প্রয়োজন।


এটি পুনর্নির্দেশ নয়; এটি সংযোগের প্রক্সি করে। মোড_প্রক্সি সক্ষম করা শোষণ করা অত্যন্ত সহজ হতে পারে যদি আপনি এটিকে কনফিগার করতে খুব যত্নবান হন না। আমি এর বিরুদ্ধে খুব সুপারিশ করব।
ক্রিস এস

4
তিনি তার ওপি অনুযায়ী পুনঃনির্দেশ চান না। তিনি চান যে মূল URLটি ঠিকানা বারে থাকবে; এর অর্থ হল মোড_প্রক্সি বা মোড_উরাইট ব্যবহার করা এবং আপনি সব চেয়ে ভাল মোড_উইরাইট এড়ানো উচিত।
অ্যাডাপ্টর

4

আপনি মোড_উইরাইট খুঁজছেন। এখানে অ্যাপাচি ডকুমেন্টেশনের লিঙ্কটি রয়েছে যা বুনিয়াদি এবং উন্নত কনফিগারেশনের জন্য অনেক উদাহরণ অন্তর্ভুক্ত করে ..

এবং আপনি যদি ডকুমেন্টেশনটি নিজে ব্যাখ্যা করতে অক্ষম হন তবে এটি httpd.conf এ যুক্ত করার চেষ্টা করুন:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]        
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]    

এবং যদি এটি একটি সুস্পষ্ট উদাহরণ না হয়, তবে এখানে একটি মোড_আরাইট লেখক গাইডের লিঙ্ক


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