Na Apache servery je možne vytvarovať takzvane virtualhosty. To znamená, že na jednom webovom servery (resp. na jednej IP adrese) môžeme vytvoriť viacero webových stránok z rôznymi doménovymi menami. Ak je niekto trocha šikovnejší, tak si vie k danému doménovemu menu dohľadať aj IP adresu na ktorej web hostuje. Robí sa to jednoduchým spôsobom. V linuxe na to slúži jednoduchý príkaz
dig markiza.sk
výsledok tohto príkazu vyzerá nasledovne
; <<>> DiG 9.9.5-3ubuntu0.19-Ubuntu <<>> markiza.sk
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6046
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;markiza.sk. IN A
;; ANSWER SECTION:
markiza.sk. 276 IN A 213.81.195.101
;; Query time: 37 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sun Jun 16 13:55:20 CEST 2019
;; MSG SIZE rcvd: 44
Všimnime si riadok 11, ktorý nám hovori, že doména markiza.sk hostuje na PC, ktorý ma pridelenú IP adresu 213.81.195.101. Takže čisto teoreticky ak zadáme do url webového prehliadača IP adresu 213.81.195.101, tak by sme mali vidieť obsah webu markiza.sk. Avšak mi tam vidíme úplne niečo iné (momentálne tam máju defaulthost s infom o apache).
Markiza.sk som uviedol len náhodou, pretoze cely ich ansabel počnuc televíziou, cez nadácie až po web považujem za veľmi primitívny. Snažia sa bežným ľudom vymývať mozgy.
Ale vráťme sa k defaulthostu. Ja mam na svojom webovom servery asi nejakých 8-10 virtualhostov (niektoré mám lokálne, ale niektoré sú verejne dostupne).
Ešte spomeniem, že doménove mená som registroval u registrátora https://www.changeip.com. Tieto weby som registroval na úrovni tretieho radu, pretože úroveň tretieho radu je väčšinou zadarmo. Mam registrované aj weby druhého radu, to znamená nieco.tld a taktiež sa mi to podarilo registrovať zadarmo, ale o tom napíšem neskôr.
Tak opäť sa vrátime k nášmu defaulthostu 😀
Dajme tomu, že mame nainštalovane 3 virtualhosty, ktorých konfiguračné súbory máme umiestnene v
/etc/apache2/sites-available/www.web1.ddns.info.conf
/etc/apache2/sites-available/www.web2.ddns.info.conf
/etc/apache2/sites-available/www.web3.ddns.info.conf
Keď som do url zadal IP adresu PC, kde mam umiestnene weby, tak som dostal vždy odpoveď z www.web1.ddns.info
Prečo je to tak? Je to tak preto, lebo apache číta konfiguráky podla poradia alfanumerických znakov, čiže ak by som mal vytvorený ešte jeden web z konfigurákom
/etc/apache2/sites-available/www.web0.ddns.info.conf
Tak by bol zobrazený práve obsah webu www.web0.ddns.info
a to preto, lebo 0 je v poradí alfanumerických znakov pred číslom 1. Preto je potrebne vytvoriť defaultny virtualhost. Mimochodom v každom čerstvo nainštalovanom apache, defaulthost existuje, ale takmer v každom manuály a návode na internete sa uvádza, že defaulthost sa disabluje a enabluju sa novo vytvorené virtualhosty. Čiže ak defaulthost máme, tak ho nedisablujeme
a2dissite 000-default.conf
ale len enablujeme novovytvorené virtualhosty. Ako vidíme defaulthost začína troma nulami „000“. Defaulthost zvyčajne obsahuje jednoduchý html kód, ktorý nás informuje o tom, že webserver funguje. Mi si spokojne môžeme tento súbor upraviť a buď ho necháme prázdny (potom keď niekto zadá IP adresu webového servera, tak sa mu zobrazí čista stránka, alebo si tam umiestnime to čo považujeme za vhodne. Ja som si tam umiestnil napr. tento kód
<?php
/**
* Show user information like IP address, useragent
**/
$ip = $_SERVER['REMOTE_ADDR'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$referrer = $_SERVER['HTTP_REFERER'];
if ($referred == "") {
$referrer = "This page was accessed directly";
}
echo "<b>Visitor IP address:</b><br/>" . $ip . "<br/>";
echo "<b>Browser (User Agent) Info:</b><br/>" . $browser . "<br/>";
echo "<b>Referrer:</b><br/>" . $referrer . "<br/>";
?>