Apache 2.3以降
Apache 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
次のコマンドを使用して、Debian / Ubuntuで実行できる機能を有効にする必要があります。
sudo a2enmod rewrite
この方法では、他の人がテストサイトにアクセスすることを完全に禁止しているわけではないので、セキュリティを追加するか、以外のあいまいな接頭辞を選択することをお勧めしますnext
。
mod_rewriteメソッドを更新します。
この方法にはいくつかの問題があります。まず、Djangoはこのような同じプロセスで2つのサイトを処理しません。この回答の指示に従う必要があります。
次に、mod_rewriteはPOST
リクエストでは機能しません!すべてPOST
のがGET
通知なしでに変更され、投稿データは破棄されます。とてもイライラします!したがって、私はあなたが使用することをお勧めします...
iptablesバージョン
サーバーを2つの異なるポートで実行するだけです。これには、2つの別個のdjangoサイトを持つためのWSGIスタッフが含まれています。
<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のIPアドレスからポート1222にリクエストをルーティングできます。
sudo iptables -A PREROUTING -t nat -p tcp -s your.ip.address --dport 80 -j DNAT --to-destination :1222
に変更-A
し-D
て、ルールを削除します。
ドキュメントでは、追加のListen
およびNameVirtualHost
コマンドを追加する必要があることを示唆していますが、実際にはそれがなくても機能し、それらを追加すると機能しなくなることがわかりました(少なくともubuntuでは)。