Virtualhost, devo aver sbagliato qualcosa nella configurazione :(

3 risposte [Ultimo contenuto]
Ritratto di aeroxr1
aeroxr1
(Newbie)
Offline
Newbie
Iscritto: 10/12/2014
Messaggi: 3

Ciao,
sto provando a far funzionare un semplice virtualhost. Ma ho dei piccoli problemini e dubbi sul funzionamento.

ho creato una cartella
/var/www/example.com/public_html
con all'interno un index.html

in sitesavailable ho creato un file example.com contenente questa configurazione :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName debianserver
        ServerAlias example.com
        DocumentRoot /var/www/example.com/public_html/
 
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/example.com/public_html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        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>

se però nel browser digito l'indirizzo ip del server seguito da example.com non mi apre il sito.. Per far apparire il sito devo digitare example.com/public_html.

Come mai ? Ho sbagliato il setting dell'alias ? Smile

Curiosità è' possibile creare virtual host differenti con ognuno il proprio accesso ftp ?

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Premessa: stiamo parlando di Apache, vero? Non sono sicuro di ricordare bene: non è che i file di configurazione di Apache devono finire con .conf? E non si devono abilitare i virtual host aggiunti con a2ensite?

Un'altro dubbio: non va specificata la direttiva

NameVirtualHost *:80
al di fuori del <VirtualHost>?

Poi non mi è chiaro con che URL accedi al server. Hai un DNS dinamico per far coincidere "example.com" con il tuo server? Modifichi a mano il file /etc/hosts?

Infine, per rispondere al tuo ultimo quesito, non mi sembra che l'FTP c'entri nulla con la configurazione del server HTTP. Forse volevi sapere se il demone FTP può essere configurato per servire contenuti diversi a seconda dell'indirizzo specificato dal client. Purtroppo dubito che sia possibile: come potrebbe sapere il server con quale nome è noto al client? Nel protocollo HTTP il client manda un header Host: apposito, ma nel protocollo FTP tale possibilità non è prevista.

Ritratto di aeroxr1
aeroxr1
(Newbie)
Offline
Newbie
Iscritto: 10/12/2014
Messaggi: 3

mcortese ha scritto:

Premessa: stiamo parlando di Apache, vero? Non sono sicuro di ricordare bene: non è che i file di configurazione di Apache devono finire con .conf? E non si devono abilitare i virtual host aggiunti con a2ensite?
Si sto parlando di Apache. E si ho già abilitato il virtualhost con a2ensite. Il file di configurazione dei virtual host se non sbaglio va inserito nella directory "sites-available" e poi abilitati con a2ensite

Un'altro dubbio: non va specificata la direttiva

NameVirtualHost *:80
al di fuori del <VirtualHost>?

Questo non lo so, ora mi viene il dubbio =P Ora provo a settarlo

EDIT : MI DA QUESTO ERRORE
"[Thu Dec 11 19:57:16 2014] [warn] NameVirtualHost *:80 has no VirtualHosts"

Poi non mi è chiaro con che URL accedi al server. Hai un DNS dinamico per far coincidere "example.com" con il tuo server? Modifichi a mano il file /etc/hosts?

Accedo in locale mettendo l'indirizzo IP del server che ho in casa, facendo : http://192.168.1.15/example.com/ però facendo così mi da la lista di tutti i file contenuti in quella directory. Se faccio http://192.168.1.15/ mi da l'index contenuta in www. Se faccio http://192.168.1.15/example.com/public_html/ si visualizza il sito example.com, vorrei poter far si che digitando example.com mi si apra il virtualhost corretto, ma non mi riesce Confused

Infine, per rispondere al tuo ultimo quesito, non mi sembra che l'FTP c'entri nulla con la configurazione del server HTTP. Forse volevi sapere se il demone FTP può essere configurato per servire contenuti diversi a seconda dell'indirizzo specificato dal client. Purtroppo dubito che sia possibile: come potrebbe sapere il server con quale nome è noto al client? Nel protocollo HTTP il client manda un header Host: apposito, ma nel protocollo FTP tale possibilità non è prevista.

si mi riferivo al demone Smile

Risposte sopra in neretto Smile

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Hai un modo molto originale di intercalare le tue risposte al testo citato. Per quanto funzioni, non è quello che chi legge il forum si aspetta. Non potresti limitarti a racchiudere la parte citata tra tag "quote" e lasciare le tue risposte fuori?

Il problema è tutto nell'indirizzo che metti nel browser. Vediamo come funziona.

Supponiamo che tu metti ftp.linux.it nel tuo browser. Di certo saprai che la rete Internet in realtà non funziona con nomi, ma con indirizzi numerici detti IP, quindi la prima cosa che deve fare il tuo computer è convertire il nome ftp.linux.it nell'IP corrispondente. Per fare questa traduzione, prima consulta il file /etc/hosts che potremmo definire una locale rubrica degli indirizzi; se non trova niente deve chiedere al più vicino servizio di risoluzione dei nomi, il DNS. Se hai una rete LAN che hai configurato tu stesso, magari hai una macchina che fa da server DNS per tutte le altre, altrimenti ti affiderai al DNS fornito dal tuo provider. In ogni caso, alla fine si arriva a tradurre ftp.linux.it nell'IP 213.92.8.5 e finalmente il tuo browser può mandare una richiesta HTTP alla macchina che risponde a quell'indirizzo. Nel formulare la richiesta, il browser aggiunge una riga (un header) tipo questa:

Host: ftp.linux.it:80

Vediamo cosa succede quando il server riceve la richiesta. Nel caso più semplice, è configurato per gestire un solo sito e quindi manda al tuo browser la sua pagina iniziale. Ma esistono server che, con lo stesso indirizzo IP gestiscono più siti. Ad esempio, lo stesso server che risponde al nome ftp.linux.it risponde anche al nome ftp.it.debian.org - ovviamente i DNS lo sanno e traducono sia il primo sia il secondo nome nello stesso indirizzo IP. Ma come fa la macchina con IP 213.92.8.5 a sapere se deve rispondere alla tua richiesta con la pagina iniziale del sito linux.it o con il mirror di debian.org? Semplice: guardando l'header Host.

Torniamo all'esempio che stai cercando di configurare. Abbiamo detto che il server può differenziare le richieste indirizzate a example.com solo se il browser gli manda un header con dentro "Host: example.com". Ma per far questo, il browser deve leggere nella barra degli indirizzi un URL che inizi proprio con example.com. E perché il browser mandi la richiesta proprio al tuo server è necessario che il browser trovi l'associazione nome-IP da qualche parte. Se non hai un DNS tutto tuo, la cosa migliore è aggiungere una riga al file /etc/hosts:

192.198.1.150  example.com
Ovviamente l'indirizzo del tuo server lo sai solo tu, io ne ho messo uno vagamente credibile!

A questo punto è tutto pronto per la prova. Da qui in poi, se qualcosa non funziona è colpa della configurazione di Apache.