Come creare sottodomini su un host virtuale basato sul nome?


27

Ho un hosting basato sul nome, chiamiamolo my.address.com. Il mio amico ha l'indirizzo "semplice" address.come mi ha dato una macchina virtuale a cui posso accedere tramite SSH.

Ha anche fatto qualche magia con le porte e ora, dopo l'installazione di Apache, ho potuto accedere /var/wwwattraverso my.address.com.

Quindi, la domanda è: come posso creare un sottodominio test.my.address.com?

Dovrebbe esserci un po 'di magia con la direttiva Listen di Apache , ma non riesco a capirlo. Inoltre, so come creare siti disponibili localmente con Apache, ma non è lo stesso.


Non è necessario Listen, dai un'occhiata agli host virtuali di Apaches: httpd.apache.org/docs/2.2/vhosts
Der Hochstapler,

la domanda principale è rimasta: cosa scrivere nella direttiva ServerName?
scythargon,

Risposte:


33

Per poter creare sottodomini, devi assicurarti di diverse cose:

DNS

Quindi gli altri possono raggiungere test.my.address.com, devono prima essere in grado di risolvere quel nome nell'indirizzo IP della tua macchina virtuale. Come può essere fatto?

Ciò che probabilmente il tuo amico ha già fatto, è stato creare un record A nella address.comzona, che indica myl'indirizzo IP della tua VM.

Fin qui tutto bene. Ma che dire test.my? Potrebbe non avere ancora una voce.

Il tuo amico potrebbe semplicemente aggiungere anche *.myalla zona (e puntarlo allo stesso indirizzo IP). Quindi tutte le richieste a something.my.address.comverranno inviate alla VM. Grande!

Host virtuali Apache

Una volta raggiunta la VM, Apache deve sapere come gestire la richiesta. Qui è dove utilizziamo la funzione Host virtuali del server HTTP Apache.

Di solito corro su Debian, quindi lo spiegherò con un esempio di configurazione in /etc/apache2/sites-available. Facciamo chiamare un file test.my.address.come riempiamolo di informazioni.

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin webmaster@my.address.com

        DocumentRoot /var/www/test.my.address.com/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/test.my.address.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/test.my.address.com.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/test.my.address.com.access.log combined
</VirtualHost>

L' impostazione chiave all'interno di questo file è la ServerNamedirettiva . Questo indica ad Apache con quale nome questo server dovrebbe essere disponibile. Nomi aggiuntivi possono essere dati con la direttiva ServerAlias .

Nel caso in cui usi anche Debian, non dimenticare di sudo a2ensite test.my.address.comdopo aver creato il file e sudo invoke-rc.d apache2 restart.


Grazie mille! :) Ho fatto la mia parte e ho scritto e-mail ad un amico sulla sua parte. Grazie ancora :)
scythargon,

@scythargon: Piacere mio. Siamo qui per aiutarti :)
Der Hochstapler,

Mentre il mio amico non ha risposto al mio, puoi, per favore? Cosa mi è stato pensato su come funziona: la richiesta http test.my.address.comva a my.address.come quindi il mio server Apache su VM lo gestisce. Ma hai detto che il server DNS su address.com dovrebbe sapere test.myprima di tutto questo e indipendentemente dalla conoscenza di my, perché?
scythargon,

@scythargon: affinché qualsiasi richiesta HTTP raggiunga il tuo server, ogni client deve prima capire a quale server deve essere inviata la richiesta. Quindi il nome host deve essere valido. Altrimenti verrà semplicemente detto "quel nome non esiste".
Der Hochstapler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.