Sari la conținut
ELFORUM - Forumul electronistilor

doua servere, un ip


Vizitator

Postări Recomandate

salut. am doua servere, in spatele unui router.

Serverului A i-am dat acces pe 80, iar server B l-am pus pe 88.

Server A, ruleaza o distributie de Linux, server B are Windows. nu prea conteaza asta dar sunt sigur ca vor fi intrebari.

ideea este ca ambele ruleaza Apache

 

consideram "aaa" director pe serverul A respectiv "bbb" director pe serverul B

 

ideea este ca as vrea ca "utilizatorul" la acesarea link-ului "domeniu.ro/aaa" sa aiba forward pe "domeniu.ro/aaa" ,

respectiv "domeniu.ro/bbb" forward spre "domeniu.ro:88/bbb"

 

as putea face cumva asta ?

 

oarecum..o idee as avea cum sa fac asta, dar as vrea si parerea voastra. pentru ca ideea mea e un pic ..."strange"

Editat de Vizitator
Link spre comentariu
  • Răspunsuri 13
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • dany_cta

    6

  • Marius Rotundu

    1

Top autori în acest subiect

Nu sunt foarte sigur ce vrei, "dns redirect" sau "change default index page".

 

Daca e primul caz ce fel de router ai?

 

Daca e al doilea sunt mai multe moduri in care poti rezolva direct din apache config sau .htacces .

 

Deci care sa fie?

Link spre comentariu

dns redirect cum ? ca ai un singur domeniu...adica un IP extern.

@dany probabil te-ai gandit sa pui un folder "bbb" gol pe serverul A cu un index.htm care sa contina chestia...nu ?

 

routerul este Asus RT-N16 cu Tomato 1.28

 

deci cred ca am scris foarte corect ce doresc.

eu am facut asa.

 

pe serverul A am modificat .htaccess

prin adaugarea liniei:

ErrorDocument 404 /missing.php

missing.php contine:

<?php$requrl = $_SERVER['REQUEST_URI'];echo "<script>window.location = 'http://domeniu.ro:88".$requrl."'</script>";?> 

tratarea exceptiei 404, se face daca nici al doilea server nu are fisierul cerut.

 

exemplu: http://upx.ro/gilbert

 

cum altfel ar fi mai ok...?

Editat de Vizitator
Link spre comentariu

Exact, eu ti-am dat solutia cea mai simpla fara sa te complici cu htaccess, solutie care face ceea ce ai explicat la inceputul postului.

 

In exemplu tau ai vrea sa citesti putin despre cross-site scripting vulnerability.

Link spre comentariu

Poti face cu mod_redirect in .htaccess daca tot vrei asta.

Sau chiar cu mod proxy cel mai elegant dar in cazul ala trebuie sa verifici adresa si sa te asiguri ca nu este ilegala. In felul asta folosesti doar portul 80 si conexiunea intre cele doua servere se face direct, nu mai trimite clientul catre al doilea server ci doar ii da output-ul. Este cea mai frumoasa solutie pentru ca nimic nu se schimba pentru client, el nici nu observa ca fisierele accesate sunt pe alt server, totul este transparent.

 

Sau bineinteles daca iti place solutia ta poate sa fie adaptata si aici:

<meta http-equiv="Refresh" content="0; url=http://domeniu.ro:88<?php echo $_SERVER['REQUEST_URI'];?>" />

Atentie: este o solutie complet nesecurizata.

 

Considerand ca fisierele nu sunt de marimi extreme, poti sa ai si o solutie de genul:

<?phpecho file_get_contents("http://<IP_server_2>:88".$_SERVER['REQUEST_URI']);?>

In care inlocuiesti <IP_server_2> cu ip-ul local al server-ului si poti sa folosesti portul 80 si pe al doilea.

Editat de dany_cta
Link spre comentariu

Doar daca vrei sa si trimiti variabile POST sau cookie-uri. Altfel nu are nici un rost.

 

Si ultima solutie este insecurizata. Poti sa primesti un url modificat si in felul asta server-ul tau o sa acceseze locatii din afara. Deci e bine sa verifici fisierul cerut sa nu contina caractere care ar putea sa conduca catre un link in exterior (exemplu simplu: sa nu contina ":" care ar putea sa sugereze un link, sau mai multe "."). Adevarul este ca in toate cazurile trebuie sa verifici, orice metoda ai alege este nesecurizata daca nu verifici.

Editat de dany_cta
Link spre comentariu

Nu pot sa ma gandesc exact, e ceva de genul in care fisierul accesat contine de fapt o adresa completa si convingi server-ul sa o acceseze, incercand chiar sa inlaturi adresa precedenta printr-un caracter de separare. Trebuie testat, dar astfel de probleme exista.

Link spre comentariu

inteleg. deci nu ar merge sa parsez url si sa verific daca host-urile corespund ?

 

de genul...

function parse_external_url( $url ) {    if( empty($url) ) {        return "";    }	    $link_url = parse_url( $url );    $home_url = parse_url( $_SERVER['HTTP_HOST'] );         if( $link_url['host'] == $home_url['host'] ) {     return $url;	} else {	  return "error";	}}sample: $requrl = parse_external_url($_SERVER['REQUEST_URI']);
Link spre comentariu

nu, in REQUEST_URI nu ai host.

 

mai degraba ceva de genul

$url=str_replace(array(":","//","","&","""),"",$_SERVER['REQUEST_URI'];if(strcmp($url,$_SERVER['REQUEST_URI'])!==0 or substr_count($_SERVER['REQUEST_URI'],".")>1) die();

Este doar o teorie dar ar trebui sa ajute, eu aleg alte moduri de securizare de obicei.

Editat de dany_cta
Link spre comentariu

mda. o sa merg deocamdata pe solutia asta, pana cand ma documentez cu proxy

multumesc de ajutor.

<?php $requrl = checkURI($_SERVER['REQUEST_URI']);echo "<meta http-equiv='Refresh' content='0; url=http://<domeniu.ro>".$requrl."'/>";function checkURI( $req_uri ) {   $req_uri = urldecode ($req_uri);   $url=str_replace(array(":","//","","&","""),"",$req_uri);   if((strcmp($url,$req_uri)!==0) or (substr_count($req_uri,".")>1)) return "//".$_SERVER['HTTP_HOST'];   return $req_uri;}?> 
Editat de Vizitator
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări