아파치 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>
아파치 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 항목이 포함됩니다.
<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
명령을하지만 실제로는 그들없이 작동하는 것을 발견하고,이를 추가하는 것이 (적어도 우분투에서) 휴식했다.