Apache 2.3 oder höher
Mit Apache 2.3 oder höher können Sie anscheinend so etwas tun (getestet):
<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 oder früher
Update: Dies ist keine gute Lösung. Siehe unten.
Du musst so einen Hack machen. Beachten Sie das, [PT]
was für "Passthrough" steht. Ohne sie wird eine tatsächliche HTTP-Umleitung an den Client zurückgesendet, was wahrscheinlich nicht das ist, was Sie wollen. Das [OR]
Ding (was für "oder" steht) zeigt, wie mehrere Adressen abgeglichen werden.
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]
Sie müssen aktivieren, mod_rewrite
was Sie unter Debian / Ubuntu mit diesem Befehl tun können:
sudo a2enmod rewrite
Beachten Sie, dass diese Methode anderen Personen den Zugriff auf Ihre Testsite nicht vollständig verbietet. Daher sollten Sie wahrscheinlich etwas Sicherheit hinzufügen oder einfach ein dunkleres Präfix als wählen next
.
Update der mod_rewrite-Methode.
Bei dieser Methode gibt es einige Probleme. Erstens funktioniert Django nicht mit zwei Sites im selben Prozess wie diesem. Sie müssen den Anweisungen in dieser Antwort folgen .
Zweitens funktioniert mod_rewrite nicht mit POST
Anfragen ! Alle POST
s werden stillschweigend in geändert GET
und die Postdaten werden verworfen. Sehr frustrierend! Deshalb empfehle ich Ihnen die ...
iptables Version
Führen Sie die Server einfach an zwei verschiedenen Ports aus. Dieser enthält das WSGI-Zeug, um zwei separate Django-Sites zu haben.
<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>
Mit diesem iptables
Befehl können Sie dann Anforderungen von Ihrer IP-Adresse an Port 80 an Port 1222 weiterleiten:
sudo iptables -A PREROUTING -t nat -p tcp -s your.ip.address --dport 80 -j DNAT --to-destination :1222
Wechseln Sie -A
zu -D
, um die Regel zu entfernen.
Beachten Sie, dass die Dokumente vorschlagen, dass Sie zusätzliche Listen
und NameVirtualHost
Befehle hinzufügen müssen , aber ich habe tatsächlich festgestellt, dass es ohne sie funktioniert, und das Hinzufügen von Befehlen hat es kaputt gemacht (zumindest in Ubuntu).