अपाचे 2.3 या बाद में
अपाचे 2.3 या बाद में आप जाहिरा तौर पर ऐसा कुछ कर सकते हैं (परीक्षण):
<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>
Apache 2.2 या पहले का
अद्यतन: यह एक अच्छा समाधान नहीं है। निचे देखो।
आपको इस तरह से एक हैक करना होगा। ध्यान दें [PT]
जो "पश्थ्रू" के लिए खड़ा है। इसके बिना, एक वास्तविक HTTP रीडायरेक्ट को क्लाइंट को वापस भेज दिया जाता है, जो संभवतः वह नहीं है जो आप चाहते हैं। वह [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 पद्धति पर अपडेट करें।
इस पद्धति के साथ कुछ समस्याएं हैं। सबसे पहले, Django इस तरह एक ही प्रक्रिया में दो साइटों के साथ काम नहीं करता है, आपको इस उत्तर में निर्देशों का पालन करने की आवश्यकता है ।
दूसरे mod_rewrite POST
अनुरोधों के साथ काम नहीं करते हैं ! सभी POST
को चुपचाप बदल दिया जाता है GET
और पोस्ट डेटा को छोड़ दिया जाता है। अधिक निराश! इसलिए मैं आपको उपयोग करने की सलाह देता हूं ...
iptables संस्करण
बस दो अलग-अलग पोर्ट पर सर्वर चलाएं। यह एक WSGI सामान दो अलग django साइटों के लिए शामिल है।
<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
आदेश का उपयोग पोर्ट 80 पर अपने आईपी पते से पोर्ट 1222 पर अनुरोधों को करने के लिए कर सकते हैं :
sudo iptables -A PREROUTING -t nat -p tcp -s your.ip.address --dport 80 -j DNAT --to-destination :1222
बदले -A
के लिए -D
नियम निकालना।
ध्यान दें कि डॉक्स आपको अतिरिक्त Listen
और NameVirtualHost
कमांड जोड़ने की आवश्यकता है , लेकिन मैंने वास्तव में पाया कि यह उनके बिना काम करता है, और उन्हें जोड़ने से यह टूट गया (कम से कम उबंटू में)।