pátek 20. března 2009

Přesměrování web serveru - DNS nebo mod_proxy ?



V životé každého admina občas nastane požadavek na přesun web serveru z jednoho OS na druhý. Klasický postup je asi jasný. Vytvořit virtualni web server na novém serveru a zařídit změnu DNS záznamu. Ale co když změna probíhá dlouho kvůli velkému TTL u domény nebo je někde jiný problém se změnou IP adresy. Ale zprovoznění přesunu je naplánováno na nějakou hodinu. Řešením je modul ve web serveru Apache mod_proxy, který šikovně umí tento problém řešit.

Server A

ServerName www.domena.cz
ServerAdmin webmaster@domena.cz
ProxyRequests Off
ProxyPass / http://www.nova.domena.cz/
ProxyPassReverse / http://www.nova.domena.cz/
ErrorLog /var/log/apache/proxy.domena.error_log
CustomLog /var/log/apache/proxy.domena.access_log combined

Apache1.x
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
AddModule mod_proxy.c

V apache2 je modul mod_proxy značně předělán a funkcionalita byla předělána do více odělených modulů.

Apache2
Default example

#turning ProxyRequests on and allowing proxying from all may allow

#spammers to use your proxy to send email.

ProxyRequests Off

AddDefaultCharset off
Order deny,allow
Deny from all
#Allow from .example.com

# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block

ProxyVia On

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule proxy_ftp_module /usr/lib/apache2/modules/mod_proxy_ftp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

Server B
Má nastaven klasický virtual s hostem http://www.nova.domena.cz/

Tento modul má široké použítí, ale vždy pozor na bezpečnost!

Žádné komentáře: