Difference between revisions of "WebServer - Name-based Virtual Host Support"
| Line 1: | Line 1: | ||
| − | + | 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. | ||
<big>'''NOTE:''' It is probably smartest to put the <code>VirtualHost</code> sections in separate files in the <code>/etc/apache2/sites-available/</code> folder, then make symbolic links to them in <code>/etc/apache2/sites-enabled</code> This will simplify maintenance down the road...</big> | <big>'''NOTE:''' It is probably smartest to put the <code>VirtualHost</code> sections in separate files in the <code>/etc/apache2/sites-available/</code> folder, then make symbolic links to them in <code>/etc/apache2/sites-enabled</code> This will simplify maintenance down the road...</big> | ||
| Line 97: | Line 95: | ||
create the links | create the links | ||
| − | * <code>cd /etc/apache2/sites-enabled</code> | + | *<code>cd /etc/apache2/sites-enabled</code> |
| − | * <code>ln -s ../sites-available/www.foo.bar.conf ../sites-available/wiki.foo.bar.conf ../sites-available/proxy.foo.bar.conf .</code> | + | *<code>ln -s ../sites-available/www.foo.bar.conf .</code> |
| + | *<code>ln -s ../sites-available/wiki.foo.bar.conf .</code> | ||
| + | *<code>ln -s ../sites-available/proxy.foo.bar.conf .</code> | ||
and restart Apache: | and restart Apache: | ||
*<code>sudo service apache2 restart</code> | *<code>sudo service apache2 restart</code> | ||
Revision as of 17:13, 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 #
#########################
<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 #
#########################
<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 T110.foo.bar #
##################################
<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-enabledln -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