Difference between revisions of "WebServer - Name-based Virtual Host Support"
Line 15: | Line 15: | ||
*'''www.foo.bar.conf''' | *'''www.foo.bar.conf''' | ||
− | ######################### | + | ########################## |
− | # WWW.foo.bar | + | # WWW.foo.bar # |
− | ######################### | + | # our default web server # |
+ | ########################## | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
Line 41: | Line 42: | ||
######################### | ######################### | ||
# Wiki.foo.bar # | # Wiki.foo.bar # | ||
+ | # our Wiki server # | ||
######################### | ######################### | ||
Line 58: | Line 60: | ||
*'''proxy.foo.bar.conf''' | *'''proxy.foo.bar.conf''' | ||
− | ################################## | + | ################################################ |
− | # Proxy for | + | # Proxy for proxy.foo.bar # |
− | ################################## | + | # an ESXi-based server on our internal network # |
+ | ################################################ | ||
<VirtualHost *:80> | <VirtualHost *:80> |
Revision as of 16:19, 28 June 2020
The Apache web server Can easily be configured to serve up different content based on the name it was called as.
This allows fun stuff like giving your machine multiple names via DNS and making it look like a whole server farm.
This also makes life easier if you're using it to proxy for other machines internal to your network.
In these notes, we'll be setting up 4 names for the server. foo.bar & www.foo.bar which will be the default web site. Wiki.foo.bar which will be served up by the same install of Apache, but still independant of the default web site. Proxy.foo.bar which is on another machine completely & wouldn't otherwise be reachable.
NOTE: It is probably smartest to put the VirtualHost
sections in separate files in the /etc/apache2/sites-available/
folder, then make symbolic links to them in /etc/apache2/sites-enabled
This will simplify maintenance down the road...
(But, if you really want to, they can simply be added to /etc/apache2/apache2.conf)
A sample set of files for /etc/apache2/sites-available
:
- www.foo.bar.conf
########################## # WWW.foo.bar # # our default web server # ########################## <VirtualHost *:80> ServerName foo.bar Redirect permanent / https://www.foo.bar/ </VirtualHost> <VirtualHost *:80> ServerName www.foo.bar Redirect permanent / https://www.foo.bar/ </VirtualHost> <VirtualHost _default_:443> ServerName www.foo.bar DocumentRoot "/var/www/html" SSLCertificateFile /etc/letsencrypt/live/www.foo.bar/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.foo.bar/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
- wiki.foo.bar.conf
######################### # Wiki.foo.bar # # our Wiki server # ######################### <VirtualHost *:80> ServerName wiki.foo.bar Redirect permanent / https://wiki.foo.bar/ </VirtualHost> <VirtualHost _default_:443> ServerName wiki.foo.bar DocumentRoot "/var/www/wiki" SSLCertificateFile /etc/letsencrypt/live/wiki.foo.bar/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/wiki.foo.bar/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
- proxy.foo.bar.conf
################################################ # Proxy for proxy.foo.bar # # an ESXi-based server on our internal network # ################################################ <VirtualHost *:80> ServerName proxy.foo.bar Redirect permanent / https://proxy.foo.bar/ </VirtualHost> <VirtualHost _default_:443> ServerName proxy.foo.bar ProxyRequests on SSLEngine On SSLProxyEngine On ProxyPreserveHost On # Redirect WSS traffic (Needed if this is a proxy for ESXi) ProxyPass /ticket/ wss://proxy.foo.bar/ticket/ ProxyPassReverse /ticket/ wss://proxy.foo.bar/ticket/ # Redirect HTTPS traffic ProxyPass / https://proxy.foo.bar/ ProxyPassReverse / https://proxy.foo.bar/ SSLCertificateFile /etc/letsencrypt/live/proxy.foo.bar/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/proxy.foo.bar/privkey.pem <Proxy "*"> Order allow,deny Allow from all </Proxy> ErrorLog /var/log/apache2/Proxy/proxy_log CustomLog /var/log/apache2/Proxy/proxy-access_log combined </VirtualHost>
create the links
cd /etc/apache2/sites-enabled
ln -s ../sites-available/www.foo.bar.conf .
ln -s ../sites-available/wiki.foo.bar.conf .
ln -s ../sites-available/proxy.foo.bar.conf .
and restart Apache:
sudo service apache2 restart