* উত্স * আইপি ভিত্তিক অ্যাপাচি ভার্চুয়াল হোস্ট


9

সোর্স আইপি ভিত্তিক বিভিন্ন ভার্চুয়াল হোস্টের জন্য অ্যাপাচি কনফিগার করা সম্ভব ? (যেমন উত্স আইপি ভিত্তিক একই ইন্টারফেস, একই হোস্টনাম, তবে দুটি ভিন্ন ভার্চুয়াল হোস্ট different

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


বিটিডাব্লু, সার্ভারে আপনার নিজের জন্য এই যুক্তিটির কী দরকার ? আপনি নিজের হোস্ট ফাইলটি কেবল নিজের জন্য টেস্টিং সার্ভারের (বা আপনার নিজের কম্পিউটার) আইপি তে ডোমেনটি মানচিত্র করতে পারেন।
ড্যান গ্রসম্যান

আপনার পরিচালনা করার জন্য একাধিক নাম আছে বা কেবল একটি? যেমন আপনি নামের সাথে বা আইপি সহ কাজ করতে পারেন (ভার্চুয়ালহোস্টগুলি সংজ্ঞায়িত করুন)।
রেজিলেরো

কোনও বিশেষ কারণে আলাদা ডক কেন?
অ্যান্টোনিসোমারসেট

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

আপনি ব্যতীত সকলের অ্যাক্সেস অবরুদ্ধ করতে লাইনগুলিকে মঞ্জুরি / অস্বীকার করতে এবং 403 ত্রুটির জন্য একটি কাস্টম ত্রুটি নথি থাকতে পারে (আপনি এটি একটি ডিরেক্টরিতে রেখেছেন এবং সেই ডিরেক্টরিতে অ্যাক্সেসের অনুমতি দিন তা নিশ্চিত করুন, অন্যথায় ত্রুটি নথিটিও 403 হবে), বা লেখা নিয়ম ব্যবহার / অবস্থার পুনর্লিখন বা dev.example.com মত একটি সাবডোমেন আপনার লঞ্চ-পূর্ব / পরীক্ষার সাইটের সরাতে তারপর example.com হোল্ডিং পৃষ্ঠা থাকতে পারে
এবার Smudge

উত্তর:


5

অ্যাপাচি স্তরে এটি সম্ভব (মোড_উইরাইট ব্যতীত) সম্ভব কিনা তা আমি জানি না।

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

iptables -A PREROUTING -t nat -i eth0 -p tcp -s your.ip.address -d your.server --dport 80 -j DNAT --to-destination your.actual.site:someport
iptables -A PREROUTING -t nat -i eth0 -p tcp ! -s your.ip.address -d your.server --dport 80 -j DNAT --to-destination your.holding.site:someport

বা অনুরূপ কিছু। :)


আমি বলব এটি সবচেয়ে স্বল্পতম বিকল্প হতে চলেছে।
দোলা

8

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

এটি করার একটি উপায় হতে পারে:

<VirtualHost *.80>
    ServerName example.com
    ...
    DocumentRoot "/path/to/root"
    <Directory "/path/to/root">
       ...
    </Directory>
    <Directory "/path/to/not/root">
       Order allow,deny
       #replace with your IP
       Allow from 192.168.0.100 
       ...
    </Directory>
    RewriteEngine On
    #Rewrite to alternate path if IP address matches
    RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.100$
    RewriteRule ^/(.*)$ /path/to/not/root/$1
<VirtualHost>

মনে রাখবেন যে এটি কোনও ডেভ সাবডোমেন দিয়ে পরিচালনা করতে সম্ভবত কিছুটা ক্লিনার হতে পারে।


4

অ্যাপাচি ২.৩ বা তারপরে

অ্যাপাচি ২.৩ বা তার পরে আপনি দৃশ্যত এরকম কিছু করতে পারেন (পরীক্ষিত):

<VirtualHost *:80>
    ServerName www.example.com

    <If "-R '10.10.10.10'">
        # The next version of the website...
        Alias /favicon.ico /home/ubuntu/website-new/favicon.ico
        Alias /static/ /home/ubuntu/static/
        WSGIScriptAlias / /home/ubuntu/website-new/main/wsgi.py
    </If>
    <Else>
        # The standard version (e.g. holding page).
        Alias /favicon.ico /home/ubuntu/website/favicon.ico
        Alias /static/ /home/ubuntu/static/
        WSGIScriptAlias / /home/ubuntu/website/main/wsgi.py
    </Else>

    # and so on...

</VirtualHost>

অ্যাপাচি ২.২ বা তার আগেরটি

আপডেট: এটি কোনও ভাল সমাধান নয়। নিচে দেখ.

আপনাকে এইভাবে একটি হ্যাক করতে হবে। [PT]"Passthrough" জন্য দাঁড়িয়েছে যা নোট করুন । এটি ছাড়া, প্রকৃত এইচটিটিপি পুনর্নির্দেশ ক্লায়েন্টের কাছে ফিরে পাঠানো হয়, যা সম্ভবত আপনি চান তা নয়। [OR]জিনিস শো (যার জন্য "বা" ঘোরা) কীভাবে একাধিক ঠিকানাগুলির সাথে মেলানোর জন্য।

Alias /next/favicon.ico /home/ubuntu/website-new/favicon.ico
Alias /next/static/ /home/ubuntu/static/
WSGIScriptAlias /next /home/ubuntu/website-new/main/wsgi.py

Alias /favicon.ico /home/ubuntu/website/favicon.ico
Alias /static/ /home/ubuntu/static/
WSGIScriptAlias / /home/ubuntu/website/main/wsgi.py

# Rewrite for our IP.
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^80\.4\.170\.209$ [OR]
RewriteCond %{REMOTE_ADDR} ^94\.193\.52\.157$
RewriteRule ^/(.*) /next/$1 [PT]

mod_rewriteএই কমান্ডটি দিয়ে আপনি ডেবিয়ান / উবুন্টুতে যা করতে পারবেন তা সক্ষম করতে হবে:

sudo a2enmod rewrite

নোট করুন যে এই পদ্ধতিটি আপনার পরীক্ষার সাইটে অ্যাক্সেস থেকে অন্য ব্যক্তিকে সম্পূর্ণ নিষিদ্ধ করে না, তাই আপনি সম্ভবত কিছুটা সুরক্ষা যুক্ত করতে চান, বা এর চেয়ে আরও অস্পষ্ট উপসর্গটি চয়ন করতে পারেন next

Mod_rewrite পদ্ধতিতে আপডেট করুন

এই পদ্ধতিতে বেশ কয়েকটি সমস্যা রয়েছে। প্রথমত, জাজানো একই পদ্ধতিতে দুটি সাইট নিয়ে কাজ করে না, আপনাকে এই উত্তরের নির্দেশাবলী অনুসরণ করতে হবে ।

দ্বিতীয়ত মোড_উইরাইট POSTঅনুরোধগুলির সাথে কাজ করে না ! সমস্ত POSTগুলি নীরবে পরিবর্তিত হয় GETএবং পোস্ট ডেটা ফেলে দেওয়া হয়। খুবই হতাশাজনক! অতএব আমি আপনাকে ...

iptables সংস্করণ

কেবল দুটি ভিন্ন পোর্টে সার্ভারগুলি চালান। এর মধ্যে দুটিতে পৃথক পৃথক জ্যাঙ্গো সাইট থাকার জন্য ডাব্লুএসজিআই স্টাফ রয়েছে।

<VirtualHost *:80>
    ServerName www.example.com

    Alias /favicon.ico /home/ubuntu/alpha/favicon.ico
    Alias /static/ /home/ubuntu/alpha/static/

    WSGIDaemonProcess alpha_wsgi user=www-data group=www-data
    WSGIScriptAlias / /home/ubuntu/alpha/alpha/wsgi.py
    WSGIProcessGroup alpha_wsgi

    ServerAdmin info@example.com

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:1222>
    ServerName www.example.com

    Alias /favicon.ico /home/ubuntu/main/favicon.ico
    Alias /static/ /home/ubuntu/main/static/

    WSGIDaemonProcess main_wsgi user=www-data group=www-data
    WSGIScriptAlias / /home/ubuntu/main/main/wsgi.py
    WSGIProcessGroup main_wsgi

    ServerAdmin info@example.com

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

তারপরে আপনি এই iptablesকমান্ডটি আপনার আইপি ঠিকানা থেকে 8022 পোর্টে 1222 পোর্টে অনুরোধগুলি রুট করতে ব্যবহার করতে পারেন :

sudo iptables -A PREROUTING -t nat -p tcp -s your.ip.address --dport 80 -j DNAT --to-destination :1222

নিয়ম সরানোর -Aজন্য পরিবর্তন করুন -D

নোট করুন যে দস্তাবেজগুলি আপনাকে অতিরিক্ত Listenএবং NameVirtualHostকমান্ড যুক্ত করার পরামর্শ দেয় , তবে আমি আসলে খুঁজে পেয়েছি যে এটি তাদের ব্যতীত কাজ করে এবং সেগুলি যুক্ত করে এটি বিরতি দেয় (কমপক্ষে উবুন্টুতে)।


২.৩+ এর জন্য আপনার উত্তরটি Alias cannot occur within <Directory/Location/Files> sectionকোনও সমাধান দেয় ? আমার সত্যিই এটি দরকার: $
গিজমো

2

আফাইক, এটি করার একমাত্র উপায় হ'ল ডকুমেন্টের শিকড়ের মধ্যে থাকা কোনও অবস্থানকে নথির মূলের বাইরে আপনার সামগ্রীতে সিমিলিং করা, তারপরে অনুরোধটি পুনরায় লিখুন।


1

@ টিএমএমএম পছন্দ করেছে বলেছে, তবে আইপমেচ স্টেটমেন্টটি সংশোধন করছে ('10 .10.10.10 'নোট করুন): সার্ভারনাম www.example.com

<If "%{REMOTE_ADDR} -ipmatch '10.10.10.10'">
    # The next version of the website...
    Alias /favicon.ico /home/ubuntu/website-new/favicon.ico
    Alias /static/ /home/ubuntu/static/
    WSGIScriptAlias / /home/ubuntu/website-new/main/wsgi.py
</If>
<Else>
    # The standard version (e.g. holding page).
    Alias /favicon.ico /home/ubuntu/website/favicon.ico
    Alias /static/ /home/ubuntu/static/
    WSGIScriptAlias / /home/ubuntu/website/main/wsgi.py
</Else>

# and so on...

কারণ অন্যথায় এটি ত্রুটিটি প্রদর্শন করবে:

Cannot parse condition clause: -ipmatch requires subnet/netmask as constant argument
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.