Onion Information
Konfiguracija virtualnih domaćina u web poslužitelju Apache HTTP Server - GASERI
Konfiguracijska naredba (dokumentacija) omogućuje Apacheju da poslužuje više različitih web sjedišta koja se nalaze na više različitih domena putem jedne IP adrese i vrata
Onion Details
Page Clicks: 1
First Seen: 03/15/2024
Last Indexed: 10/23/2024
Onion Content
Preskoči na sadržaj Konfiguracija virtualnih domaćina u web poslužitelju Apache HTTP Server Konfiguracijska naredba ( dokumentacija ) omogućuje Apacheju da poslužuje više različitih web sjedišta koja se nalaze na više različitih domena putem jedne IP adrese i vrata. Primjer primjene virtualnih domaćina Ilustracije radi, promotrimo web sjedišta www.math.uniri.hr , www.phy.uniri.hr i www.biotech.uniri.hr . $ curl -v -I http://www.phy.uniri.hr/hr/ * Trying 193 .198.209.33:80... * Connected to www.phy.uniri.hr ( 193 .198.209.33 ) port 80 ( #0) > HEAD /hr/ HTTP/1.1 > Host: www.phy.uniri.hr > User-Agent: curl/7.70.0 > Accept: */* > * Mark bundle as not supporting multiuse HEAD /hr/ HTTP/1.1 > Host: www.math.uniri.hr > User-Agent: curl/7.70.0 > Accept: */* > * Mark bundle as not supporting multiuse HEAD /hr/ HTTP/1.1 > Host: www.biotech.uniri.hr > User-Agent: curl/7.70.0 > Accept: */* > * Mark bundle as not supporting multiuse Odjel za matematiku - Vijesti ( ... ) Konfiguracija virtualnih domaćina za HTTP Recimo da imamo dvije domene, prometej.rm.miletic.net i epimetej.rm.miletic.net te da želimo na njih postaviti dva različita web sjedišta. Stvorimo sadržaj tih web sjedišta: $ mkdir -p www/ { epimetej,prometej } /html $ echo ' Epimetej ' > www/epimetej/html/index.html $ echo ' Prometej ' > www/prometej/html/index.html Apache koji koristimo već dolazi s konfiguracijskom datotekom za virtualne domaćine koju možemo prilagoditi i uključiti. Dohvatimo tu datoteku: $ docker run --rm httpd:2.4 cat /usr/local/apache2/conf/extra/httpd-vhosts.conf > my-httpd-vhosts.conf Uredimo tu datoteku; uočimo da su nam konfiguracijske naredbe ServerAdmin , ServerName i DocumentRoot već poznate, samo se nalaze unutar bloka naredbi : # Virtual Hosts # # Required modules: mod_log_config # If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn't need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at # # for further details before you try to setup virtual hosts. # #... ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "logs/dummy-host.example.com-error_log" CustomLog "logs/dummy-host.example.com-access_log" common ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com" ServerName dummy-host2.example.com ErrorLog "logs/dummy-host2.example.com-error_log" CustomLog "logs/dummy-host2.example.com-access_log" common Maknemo li konfiguracijsku naredbu ServerAdmin , za taj virtualni domaćin koristit će se ona vrijednost koju smo već ranije postavili u datoteci my-httpd.conf , što nam odgovara. Naredbu ServerAlias ne trebamo jer imamo samo jednu domenu po virtualnom domaćinu. Također, logging nam ovdje nije bitan pa ćemo i te dvije naredbe maknuti, čime smo eliminirali i potrebu za modulom mod_log_config koja se navodi u zaglavlju konfiguracijske datoteke u komentarima. Naposlijetku, moramo dodati dozvolu pristupa ( Require all granted ) za svaki od direktorija koji se koristi kao DocumentRoot . Konfiguracija (zasad samo za HTTP vrata 80) je oblika: DocumentRoot "/var/www/epimetej/html" Require all granted ServerName epimetej.rm.miletic.net DocumentRoot "/var/www/prometej/html" Require all granted ServerName prometej.rm.miletic.net Kad se koriste virtualni domaćini, tada prvi navedeni u konfiguracijskoj datoteci postaje zadani virtualni domaćin i koristi se kod odgovora na zahtjeve kod kojih vrijednost u zaglavlju Host primljenog HTTP zahtjeva ne odgovara ni jednoj vrijednosti konfiguracijske naredbe ServerName . Zato je dobra praksa eksplicitno prvo navesti zadani virtualni domaćin: DocumentRoot "/var/www/html" DocumentRoot "/var/www/epimetej/html" Require all granted ServerName epimetej.rm.miletic.net DocumentRoot "/var/www/prometej/html" Require all granted ServerName prometej.rm.miletic.net U datoteci my-httpd.conf odkomentirajmo liniju koja naredbom Include ( dokumentacija ) uključuje konfiguracijsku datoteku koju smo upravo uredili. Promijenimo: #... # Virtual hosts #Include conf/extra/httpd-vhosts.conf #... tako da bude: #... # Virtual hosts Include conf/extra/httpd-vhosts.conf #... Promijenimo Dockerfile tako da uključuje novu datoteku, dodajmo još jednu naredbu COPY koja će kopirati datoteku my-httpd-vhosts.conf u Docker kontejner na mjesto conf/extra/httpd-vhosts.conf : FROM httpd:2.4 COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf COPY ./www /var/www COPY ./my-httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf Izgradimo sliku i pokrenimo Docker kontejner: $ docker build -t "my-httpd:2.4-3" . Sending build context to Docker daemon 54 .78kB Step 1 /4 : FROM httpd:2.4 ---> b2c2ab6dcf2e Step 2 /4 : COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf ---> e475515ada38 Step 3 /4 : COPY ./www /var/www ---> c764360e0255 Step 4 /4 : COPY ./my-httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf ---> 7839a9247066 Successfully built 7839a9247066 Successfully tagged my-httpd:2.4-3 $ docker run my-httpd:2.4-3 [ Sun May 10 22 :09:41.239474 2020 ] [ mpm_event:notice ] [ pid 1 :tid 139624574960768 ] AH00489: Apache/2.4.43 ( Unix ) configured -- resuming normal operations [ Sun May 10 22 :09:41.239504 2020 ] [ core:notice ] [ pid 1 :tid 139624574960768 ] AH00094: Command line: 'httpd -D FOREGROUND' Uvjerimo se da nam virtualni domaćini rade: $ curl --header "Host: prometej.rm.miletic.net" http://172.17.0.2/ Prometej $ curl --header "Host: epimetej.rm.miletic.net" http://172.17.0.2/ Epimetej Uvjerimo se da nam zadani virtualni domaćin hvata sve zahtjeve koji ne pašu na ova dva iznad: $ curl http://172.17.0.2/ Radi! $ curl --header "Host: atlas.rm.miletic.net" http://172.17.0.2/ Radi! Author: Vedran Miletić