Fórum Root.cz
Hlavní témata => Server => Téma založeno: cartman 28. 04. 2011, 15:59:53
-
zdar, mam server A , za A, za firewallom, server B, stranky su na servery B a chcem, aby ked zadam domenu, tak sa to pytalo web servera na B, cize nejakadomena.com z internetu pojde rovno na B server (cez A)
ide ale o to, ze ked citam manual k proxy, tak
ProxyPass /mirror/foo/ http://backend.example.com/
ProxyPassReverse /mirror/foo/ http://backend.example.com/
cize ked dam dns A + /mirror/foo tak ma to nasmeruje na beckend.example.com (cize nase B)
ja ale chcem, aby som nezadaval za A server nic, len proste aby redirectol moju poziadavku nejakadomena.com hned na B, cize aby som nezadaval ip/dns A servera + nejaku cestu ale rovno len domenu, ktora patri strankam na B
dakujem za rady
-
Jedna z moznosti je urobit si v apache virtualhost asi takto:
<VirtualHost *:80>
ServerName www.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPassReverse http://backend.example.com/
ProxyPass http://backend.example.com/
</Location>
</VirtualHost>
Ale vsade sa tvrdi, ze nez zacnes s tymto tak si musis vyrazne vyriesit bezpecnost - nech to znamena cokolvek. Preto odporucam haproxy. Haproxy bude pocuvat na serveri A na verejnej ip na porte 80 a podla virtualhostov bude posielat poziadavky na localhost:80, alebo B:80. Proxy a apache nemozu bezat na tom istom porte, preto musis prinutit apache aby pocuval napriklad len na localhoste, alebo na inom porte.
-
dakujem za radu, to haproxy vyzera rozumne
-
Ostal by som pri kombinacii Apache + mod_proxy+ mod_rewrite. Proxovat na B/E len tie URI ktore su validne (pomocou rewrite pravidiel). Ostatne zahadzovat, pripadne vhodne prepisovat.
-
Ale vsade sa tvrdi, ze nez zacnes s tymto tak si musis vyrazne vyriesit bezpecnost - nech to znamena cokolvek. Preto odporucam haproxy. Haproxy bude pocuvat na serveri A na verejnej ip na porte 80 a podla virtualhostov bude posielat poziadavky na localhost:80, alebo B:80. Proxy a apache nemozu bezat na tom istom porte, preto musis prinutit apache aby pocuval napriklad len na localhoste, alebo na inom porte.
Bylo by možné být konkrétnější? Jaké zvýšené riziko to podle Tebe přináší?
-
Akakolvek zataz servera B zatazuje aj server A. A pri zlej konfiguracii sa vraj daju robit utoky na lubovolny pocitac pomocou serveru A. V manualoch a navodoch som vsak ukazky "zlej" konfiguracie nenasiel. Pisem to koli tomu, ze vsade, kde sa hovorilo o mod_proxy sa hovorilo aj o postupe: najprv vyries zabezpecenie a potom ries proxy.
Pri Haproxy nie je s vykonom problem: na ich stranke sa uvadza test, kde dokazali preposielat na c2d po 10Gbit kabli az 9,5Gbit, co by ti na zaciatok mohlo stacit.
U nas ho pouzivame na smerovanie podla vyrtualhostov, takze kazda poziadavka sa parsuje podla adresy a smeruje na spravny stroj. Vyriesili sme tak migraciu zo stareho servera na novy "bez vypadku". Pri celkovom load servera 0.5 (apache, mysql, php, dns) nie je haproxy v grafoch vobec vidiet.
-
Nginx je na tento ucel uplne skvele. Tiez sa na nom oplati terminovat ssl spojenia. Jeho konfiguracia je uplne straight forward.
-
nie som v tomto zbehnuty vobec ale potreboval by som najlepsie a najjednoduchsie riesenie. vyskusal som klasicke reverse proxy a celkom to ide pekne ale pravda ta zataz je momentalne vlastne nulova ... proste transparentne priamociare riesenie bez dalsich nastrovoj a obskurnosti, takze asi sa pozriem na to haproxy ...
to haproxy sa moze zist aj v buducnosti, za firewallom mame este 5 serverov a tak robit s tym nejaky loadbalancing je celkom pekne plus ...
-
Loadbalancing cez HAProxy je na L3 urovni ak sa nemylim... Cez NGX, Apache, etc sa riesi load balancing na L7.
Si zober napriklad session stickness... U nas moze konkretna sesna smerovat len na konkrent pool serverov. Ako vzdy je vsetko SSL a HAProxy ho neterminuje a teda netusi o aku sesnu sa jedna. Preto je celkom idelane riesenie --> request --> Firewall --> L2 loadbalancer --> L7 loadbalancer --> App server
Kedze tu asi netreba riesit moc, stacilo by L7 LB. Sample config ngx:
upstream xxxxxxxx {
server xxxxxxxx:80 weight=300 srun_id=xxxxxxxx;
server xxxxxxxx:80 weight=400 srun_id=xxxxxxxx;
server xxxxxxxx:80 weight=400 srun_id=xxxxxxxx;
server xxxxxxxx:80 weight=500 srun_id=xxxxxxxx;
server xxxxxxxx:80 weight=500 srun_id=xxxxxxxx;
#
jvm_route $cookie_JSESSIONID reverse;
}
# Main HTTP redirect
server {
listen 80;
server_name _;
access_log /var/log/nginx/http.access.log;
server_name_in_redirect off;
location / {
rewrite ^(.*) https://$host$1 permanent;
}
}
# xxxxxxxx HTTPS loadbalanced
server {
listen xxxxxxxx:443;
listen xxxxxxxx:443;
server_name _;
ssl on;
ssl_certificate /etc/nginx/ssl/wc.xxxxxxxx.crt;
ssl_certificate_key /etc/nginx/ssl/wc.xxxxxxxx.key;
ssl_session_timeout 30m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/https.access.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-FORWARDED_PROTO https;
proxy_pass http://xxxxxxxx/;
}
}
-
pokud se má opravdu vše z A:80 posílat na B:80.. nestačí obyčený port forward na úrovní iptables? :-)
-
pokud se má opravdu vše z A:80 posílat na B:80.. nestačí obyčený port forward na úrovní iptables? :-)
Nie pokial ide o loadbalancing.
Na http -> http je uplne dostacujuci HAProxy alebo Ldirectord
Na https -> http je idealne nginx
-
Nie pokial ide o loadbalancing.
o tom ale v původním dotazu nic není :-)
-
Reakcia dotazujuceho (14:53) ale uz LB zmienuje.