WebServer - Name-based Virtual Host Support

From The TinkerNet Wiki
Revision as of 15:50, 28 June 2020 by Tinker (talk | contribs)
Jump to navigation Jump to search

This page was created while splitting my original webserver from a single name to 3 names to make access easier. I moved the wikis to their own subdomains. At some point, I really should clean this page up to make it clearer...

(i.e.: moving it from test.tinkernow.net/wiki to wiki.tinkernow.net)
sudo vim /var/www/LocalSettings.php

Then add this to /etc/apache2/apache2.conf

NOTE: It is probably smarter 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...

<VirtualHost *:80 *:443>
    # This first-listed virtual host is also the default for *:80
    ServerName test.tinkernow.net
#    ServerAlias tinkernow.net
    DocumentRoot "/var/www/html"
</VirtualHost>

<VirtualHost *:80>
    ServerName wiki.tinkernow.net
    Redirect permanent / https://wiki.tinkernow.net/
    # This line causes http requests to be converted to https...
</VirtualHost>

<VirtualHost _default_:443>
    ServerName wiki.tinkernow.net
    DocumentRoot "/var/www/wiki"
</VirtualHost>

<VirtualHost *:80>
    ServerName labnotes.tinkernow.net
    Redirect permanent / https://labnotes.tinkernow.net/
    # This line causes http requests to be converted to https...
</VirtualHost>

<VirtualHost _default_:443>
    ServerName labnotes.tinkernow.net
    DocumentRoot "/var/www/labnotes"
</VirtualHost>

<VirtualHost *:80>
    ServerName blog.tinkernow.net
    Redirect permanent / https://blog.tinkernow.net/
    # This line causes http requests to be converted to https...
</VirtualHost>

<VirtualHost _default_:443>
    ServerName blog.tinkernow.net
    DocumentRoot "/var/www/WP"
</VirtualHost>

A 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.CA    #
##################################

<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>

and restart Apache:

  • sudo service apache2 restart