PDA

View Full Version : Apache su porta 81 non visibile su Internet


bestit
26-03-2009, 14:11
Per prima cosa buongiorno a tutti.
E' con grande piacere che posto il mio problema su questo forum.
Veniamo al problema:
ho un server WEB con Windows 2003 SVR con installati contemporaneamente IIS 6 (porta 80) e Apache 2.2 (porta 81) ed un solo indirizzo IP Pubblico.
In locale tutto funziona correttamente.
Le due url di dominio (che chiamerò www.sitoiis.it e www.sitoapache.it) puntano tramite gestione del dns sull'ip della macchina.
Ora succede che il sito IIS www.sitoiis.it non ha nessun problema e funziona correttamente (sulla porta 80 per default).
Il sito che gira su apache funziona solo se metto nella url del browser www.sitoapache.it:81
Ho provato a configurare apache tramite vistual host, ma non ne ne vuole sapere.
In poche parole www.sitoapache.it mi cerca sempre la porta 80 ed ovviamente la risposta del browser è Bad Request "(Invalid Hostname)".
Questa la configurazione che ho messo in virtualhost di apache:

listen ip_pubblico:81

<VirtualHost ip_pubblico:81>
DocumentRoot C:/www
ServerName sitoapache.it
ServerAlis www.sitoapache.it
</VirtualHost>

Poi ho anche configurato il file "hosts" in C:\WINDOWS\system32\drivers\etc in questo modo:

ip_pubblico www.sitoapache.it
ip_pubblico sitoapache.it


Qualcuno di voi sa dirmi come riesco a risolvere il problema?

Grazie a tutto anticipatamente.

Empyrium
26-03-2009, 14:54
Quando usi un URL http://sito web viene sempre fatta in modo automatico e trasparente la traduzione in <IP del sito : porta TCP 80>.

Per risolvere, le due strade più semplici sono in alternativa:


usare due indirizzi IP pubblici, modificando adeguatamente i record DNS
fare due virtual host sullo stesso server

bestit
26-03-2009, 15:03
Grazie della tempestiva risposta.
Escludendo però la prima soluzione (quella di 2 ip pubblici), in che modo dovrei configurare i due virtualhost?

Empyrium
26-03-2009, 15:42
Devi usare lo stesso server web per tutti siti che vuoi hostare: o IIS o Apache (o quello che vuoi). Le istruzioni per farlo si trovano facilmente in giro per la rete, basta cercare name based virtual hosts.

Per esempio, nel caso di Apache è tutto spiegato nei dettagli qui (http://httpd.apache.org/docs/2.2/vhosts/name-based.html).

bestit
26-03-2009, 16:34
Ok, ma non ho capito cosa ha a che fare virtual host con IIS.
Provo cmq in serata a metterci mano.
Grazie

Empyrium
26-03-2009, 17:10
Il termine virtual hosts indica genericamente la possibilità di hostare più siti su un unico server, utilizzando un solo IP pubblico. Per maggiori informazioni, puoi leggere questa (http://en.wikipedia.org/wiki/Virtual_hosting) pagina.

Detto ciò, non ricordo quale sia il termine esatto usato da Microsoft all'interno di IIS. In ogni caso, puoi trovare informazioni su come configurare e hostare più virtual host qui (http://support.microsoft.com/kb/q190008/) e qui (http://www.simpledns.com/kb.aspx?kbid=1149).

bestit
27-03-2009, 11:09
Scusami, so perfettamente come funziona IIS, ma IIS serve solo in questo caso per far funzionare ASP.
Io devo far sì che quando arrivi una chiamata dalla url www.pippo.com mi vada a leggere automaticamente sulla porta 81 e non sulla 80.
Adesso funziona solo se digito nel browser di internet www.ippo.com:81
81 è la porta di Apache... ci sarà una soluzione, sto impazzendo!

Le ho provate tutte, anche il name based virtual hosts.

Anche il name based virtual hosts.

Empyrium
27-03-2009, 11:38
Ti ho già detto che quando usi http://www.pippo.com, l'URL viene automaticamente tradotto in http://<IP associato al dominio>:<porta TCP 80>.

Oltre a quelle che ho scritto nel primo post, non esistono soluzioni semplici ed ottimali per poter "trasformare" una richiesta verso http://www.pippo.com in una verso http://www.pippo.com:81 (che sarebbe l'indirizzo reale del server).

Eventualmente, potresti considerare queste altre tre opzioni:


creare una pagina HTML stupidissima dentro IIS, che faccia un redirect verso il server Apache
usare un reverse proxy a monte, intercettando solo le richieste verso http://www.pippo.com e routarle verso il server Apache
far girare tutto (compreso il sito ASP) con Apache