Meerdere subdomains op Apache hosten achter 1 IP

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Damian
  • Registratie: Maart 2001
  • Laatst online: 11:42

Damian

Insane Obtrusion

Topicstarter
Ik probeer op mijn Ubuntu server meerdere sites te hosten achter een enkel WAN IP. Ik heb echter het probleem dat ik vanaf de verschillende subdomeinen elke keer op de eerste virtual host terecht kom, en niet op de tweede virtual host.

WAN IP heeft poorten 80 en 443 geforward naar mijn Linux bakkie. Hierop draait Ubuntu 20.04.2 en Apache 2.4.41

Oorspronkelijk doel was om deze server Nextcloud (nc.damianweb.nl) te laten draaien, dat doet ie dan nu ook prima. Ik wil er nu dus een website naast gaan draaien, die op public.damianweb.nl moet gaan draaien. Ik heb hiervoor een tweede conf file aangemaakt, en deze netjes geplaatst in sites-available, en daarna geactiveerd (a2ensite public.conf). Uiteraard Apache herstart. Ook de server is voor de zekerheid herstart.

De sites-available config files zien er nu zo uit:

public.conf
code:
1
2
3
4
5
6
7
8
9
10
11
<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/public
    ServerName damianweb.nl
    ServerAlias public.damianweb.nl

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>


nextcloud.conf
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<VirtualHost *:80>
        DocumentRoot "/var/www/nextcloud"
        ServerName damianweb.nl
        ServerAlias nc.damianweb.nl
        ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
        CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined

        <Directory /var/www/nextcloud/>
            Require all granted
            Options FollowSymlinks MultiViews
            AllowOverride All

           <IfModule mod_dav.c>
               Dav off
           </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
        Satisfy Any

       </Directory>

RewriteEngine on
RewriteCond %{SERVER_NAME} =nc.damianweb.nl
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>


nextcloud-le-ssl.conf
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<IfModule mod_ssl.c>
SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)
<VirtualHost *:443>
        DocumentRoot "/var/www/nextcloud"
        ServerName damianweb.nl
        ServerAlias nc.damianweb.nl

        ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
        CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined

        <Directory /var/www/nextcloud/>
            Require all granted
            Options FollowSymlinks MultiViews
            AllowOverride All

           <IfModule mod_dav.c>
               Dav off
           </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
        Satisfy Any

       </Directory>


SSLCertificateFile /etc/letsencrypt/live/nc.damianweb.nl/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nc.damianweb.nl/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLUseStapling on
Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
</IfModule>


Ik heb in mijn ports.conf onderstaand gezet n.a.v. wat zoekwerk, echter is dat volgens mij al depricated:
code:
1
2
NameVirtualHost *:80
NameVirtualHost *:443


Overige info:
code:
1
2
3
root@nextcloud:/var/www/public# apachectl configtest
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:6
Syntax OK


code:
1
2
3
4
5
6
7
8
9
10
11
root@nextcloud:/var/www/public# apachectl -t -D DUMP_VHOSTS
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:6
VirtualHost configuration:
*:443                  damianweb.nl (/etc/apache2/sites-enabled/nextcloud-le-ssl.conf:3)
*:80                   is a NameVirtualHost
         default server localhost (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost damianweb.nl (/etc/apache2/sites-enabled/nextcloud.conf:1)
                 alias nc.damianweb.nl
         port 80 namevhost damianweb.nl (/etc/apache2/sites-enabled/public.conf:1)
                 alias public.damianweb.nl


Probleem is dat zowel nc.damianweb.nl als public.damianweb.nl naar de NextCloud instance gaan, al krijg ik op public.damianweb.nl wel een foutmelding van NextCloud omdat het geen trusted_domain is om NextCloud te benaderen.

Ik ben niet zo'n Apache Guru dus ik weet ff niet waar het nu in zit. Als jullie meer info nodig hebben hoor ik het uiteraard graag!

Ieri ero quiete, perché oggi sarò la tempesta

Alle reacties


Acties:
  • +1 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 20-05 21:34

DataGhost

iPL dev

Je hebt dezelfde ServerName bij beide VirtualHosts. Dat gaat niet werken natuurlijk. Het zou me niks verbazen als je daar een warning over hebt gekregen in je logs.

Acties:
  • 0 Henk 'm!

  • Damian
  • Registratie: Maart 2001
  • Laatst online: 11:42

Damian

Insane Obtrusion

Topicstarter
DataGhost schreef op woensdag 23 juni 2021 @ 13:19:
Je hebt dezelfde ServerName bij beide VirtualHosts. Dat gaat niet werken natuurlijk. Het zou me niks verbazen als je daar een warning over hebt gekregen in je logs.
Klopt, was een probeersel. Ik weet echter niet wat het precies zou moeten zijn?

code:
1
2
3
4
5
6
7
8
9
10
11
80
 ServerName nc.damianweb.nl
    ServerAlias nc.damianweb.nl

443
 ServerName nc.damianweb.nl
    ServerAlias nc.damianweb.nl

80
 ServerName public.damianweb.nl
    ServerAlias public.damianweb.nl


zo issie nu.

Ieri ero quiete, perché oggi sarò la tempesta


Acties:
  • 0 Henk 'm!

  • borft
  • Registratie: Januari 2002
  • Laatst online: 12:13
gaat ie niet gewoon altijd naar https, bv omdat je hsts aan hebt staan? In dat geval zal je iets van SNI aan moeten zetten, en/of een wildcard certificaat gebruiken en ook ssl configgen voor je public site.

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 20-05 21:34

DataGhost

iPL dev

Damian schreef op woensdag 23 juni 2021 @ 13:22:
[...]


Klopt, was een probeersel. Ik weet echter niet wat het precies zou moeten zijn?

code:
1
2
3
4
5
6
7
8
9
10
11
80
 ServerName nc.damianweb.nl
    ServerAlias nc.damianweb.nl

443
 ServerName nc.damianweb.nl
    ServerAlias nc.damianweb.nl

80
 ServerName public.damianweb.nl
    ServerAlias public.damianweb.nl


zo issie nu.
Dit zou moeten werken. Je ServerAlias is wel een beetje overbodig in elke vhost mja.
borft schreef op woensdag 23 juni 2021 @ 13:25:
gaat ie niet gewoon altijd naar https, bv omdat je htst aan hebt staan? In dat geval zal je iets van SNI aan moeten zetten, en/of een wildcard certificaat gebruiken en ook ssl configgen voor je public site.
Dat ook natuurlijk. Goed gespot, zo ver had ik nog niet eens gekeken. Ik zie dat TS Let's Encrypt gebruikt, geen enkele noodzaak voor een wildcard (maar dat mag wel). Zorg gewoon dat alle vhosts via HTTPS bereikbaar zijn met de juiste certificaten en alles zou moeten werken.

Acties:
  • +1 Henk 'm!

  • Jorick
  • Registratie: November 2001
  • Laatst online: 20-05 10:15
Hier staat het duidelijk beschreven: http://httpd.apache.org/docs/current/vhosts/name-based.html

Omdat jij dezelfde ServerName gebruikt in meerdere VirtualHost-configuraties weet Apache niet welke hij moet hebben en pakt hij de eerste de beste. In dit geval zal dat dan die van Nextcloud zijn omdat de N eerder in het alfabet staat dan de P. Gebruik van unieke ServerName zal je probleem verhelpen (vergeet niet je je wijzigen te reloaden anders gebeurt er niks).

Acties:
  • 0 Henk 'm!

  • Damian
  • Registratie: Maart 2001
  • Laatst online: 11:42

Damian

Insane Obtrusion

Topicstarter
Jorick schreef op woensdag 23 juni 2021 @ 13:31:
Hier staat het duidelijk beschreven: http://httpd.apache.org/docs/current/vhosts/name-based.html

Omdat jij dezelfde ServerName gebruikt in meerdere VirtualHost-configuraties weet Apache niet welke hij moet hebben en pakt hij de eerste de beste. In dit geval zal dat dan die van Nextcloud zijn omdat de N eerder in het alfabet staat dan de P. Gebruik van unieke ServerName zal je probleem verhelpen (vergeet niet je je wijzigen te reloaden anders gebeurt er niks).
Zoals ik aangaf zijn die nu per poort in ieder geval uniek... zie iets verder boven.
DataGhost schreef op woensdag 23 juni 2021 @ 13:27:
[...]

Dit zou moeten werken. Je ServerAlias is wel een beetje overbodig in elke vhost mja.


[...]

Dat ook natuurlijk. Goed gespot, zo ver had ik nog niet eens gekeken. Ik zie dat TS Let's Encrypt gebruikt, geen enkele noodzaak voor een wildcard (maar dat mag wel). Zorg gewoon dat alle vhosts via HTTPS bereikbaar zijn met de juiste certificaten en alles zou moeten werken.
Voor het aanvragen van een SSL cert moet de site wel eerst werken op poort 80, en dat doet ie dus niet.

[ Voor 31% gewijzigd door Damian op 23-06-2021 13:36 ]

Ieri ero quiete, perché oggi sarò la tempesta


Acties:
  • 0 Henk 'm!

  • Jorick
  • Registratie: November 2001
  • Laatst online: 20-05 10:15
Heb je na het wijzigen van de configuratie apache ook herstart of de configuratie herladen? Zo niet dan zijn de wijzigingen nog niet actief en zie je nog steeds hetzelfde resultaat als met de configuratie uit je TS.

Acties:
  • 0 Henk 'm!

  • Damian
  • Registratie: Maart 2001
  • Laatst online: 11:42

Damian

Insane Obtrusion

Topicstarter
Jorick schreef op woensdag 23 juni 2021 @ 13:37:
Heb je na het wijzigen van de configuratie apache ook herstart of de configuratie herladen? Zo niet dan zijn de wijzigingen nog niet actief en zie je nog steeds hetzelfde resultaat als met de configuratie uit je TS.
uiteraard ;)

Ieri ero quiete, perché oggi sarò la tempesta


Acties:
  • 0 Henk 'm!

  • Jorick
  • Registratie: November 2001
  • Laatst online: 20-05 10:15
Hoe ziet je output van
code:
1
apachectl -t -D DUMP_VHOSTS
er nu uit?

Acties:
  • 0 Henk 'm!

  • Damian
  • Registratie: Maart 2001
  • Laatst online: 11:42

Damian

Insane Obtrusion

Topicstarter
Jorick schreef op woensdag 23 juni 2021 @ 13:40:
Hoe ziet je output van
code:
1
apachectl -t -D DUMP_VHOSTS
er nu uit?
code:
1
2
3
4
5
6
7
8
9
10
11
root@nextcloud:/home/administrator# apachectl -t -D DUMP_VHOSTS
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:6
VirtualHost configuration:
*:443                  nc.damianweb.nl (/etc/apache2/sites-enabled/nextcloud-le-ssl.conf:3)
*:80                   is a NameVirtualHost
         default server localhost (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost nc.damianweb.nl (/etc/apache2/sites-enabled/nextcloud.conf:1)
                 alias nc.damianweb.nl
         port 80 namevhost public.damianweb.nl (/etc/apache2/sites-enabled/public.conf:1)
                 alias public.damianweb.nl

Ieri ero quiete, perché oggi sarò la tempesta


Acties:
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Damian schreef op woensdag 23 juni 2021 @ 13:33:
Voor het aanvragen van een SSL cert moet de site wel eerst werken op poort 80, en dat doet ie dus niet.
De (nieuwe?) wildcard certificaten van Let's Encrypt kun je ook met DNS validatie doen en hoeft de website dus niet op poort 80 bereikbaar te zijn.

Al blijft het altijd nog wel netjes om op poort 80 de hosts bereikbaar te laten zijn, die vervolgens het protocol wijzigen van HTTP (op poort 80) naar HTTPS op dezelfde hostname en poort 443. :)

[ Voor 21% gewijzigd door CH4OS op 23-06-2021 13:44 ]


Acties:
  • 0 Henk 'm!

  • Damian
  • Registratie: Maart 2001
  • Laatst online: 11:42

Damian

Insane Obtrusion

Topicstarter
CH4OS schreef op woensdag 23 juni 2021 @ 13:41:
[...]
De (nieuwe?) wildcard certificaten van Let's Encrypt kun je ook met DNS validatie doen en hoeft de website dus niet op poort 80 bereikbaar te zijn.

Al blijft het altijd nog wel netjes om op poort 80 de hosts bereikbaar te laten zijn, die vervolgens het protocol wijzigen van HTTP (op poort 80) naar HTTPS op dezelfde hostname en poort 443. :)
True, al zal bijvoorbeeld Chrome er automatisch al HTTPS van maken als je website.nl intypt.

Ieri ero quiete, perché oggi sarò la tempesta


Acties:
  • 0 Henk 'm!

  • Jorick
  • Registratie: November 2001
  • Laatst online: 20-05 10:15
De ServerAlias kun je wel achterwege laten als deze gelijk is aan de ServerName (voegt niets toe) en tevens zou ik ook even de default vhost (000-default.conf) uitschakelen om overbodige ruis te voorkomen in het geval je daar nog wijzigingen aan gedaan hebt. Met de wijzigingen die je hebt gedaan heb je nog steeds hetzelfde resultaat als met de config uit je TS?

Acties:
  • +1 Henk 'm!

  • Vorkie
  • Registratie: September 2001
  • Niet online
Ik zou trouwens gewoon nginx ertussen zetten, (nxginx manager). Veel makkelijker en alles gelijk gedekt.

Acties:
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Vorkie schreef op woensdag 23 juni 2021 @ 13:56:
Ik zou trouwens gewoon nginx ertussen zetten, (nxginx manager). Veel makkelijker en alles gelijk gedekt.
Of, als er met containers gewerkt wordt, Traefik!

[ Voor 3% gewijzigd door CH4OS op 23-06-2021 14:26 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Damian schreef op woensdag 23 juni 2021 @ 13:50:
True, al zal bijvoorbeeld Chrome er automatisch al HTTPS van maken als je website.nl intypt.
Toch is het wel verstandig om het zelf ook aan te bieden. Niet alle browsers doen dat namelijk. En is het, for the time being, gewoon goed om het wel te doen. Je wilt sowieso niet afhankelijk zijn van derde partijen dat die dit voor jou doen. ;)

[ Voor 13% gewijzigd door CH4OS op 23-06-2021 14:30 ]


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 20-05 21:34

DataGhost

iPL dev

Damian schreef op woensdag 23 juni 2021 @ 13:33:
[...]

Voor het aanvragen van een SSL cert moet de site wel eerst werken op poort 80, en dat doet ie dus niet.
Hoe heb je dat geprobeerd? Als je met je browser naar damianweb.nl bent gegaan en je je NextCloud geserveerd hebt gekregen, ben je dus ook redirected naar HTTPS en heb je een HSTS-header gehad (want die heb je ingesteld). Je browser onthoudt dit en zal weigeren naar damianweb.nl nog via poort 80 te gaan maar pakt in plaats daarvan poort 443. Aangezien je maar 1 vhost hebt op HTTPS zal je vervolgens altijd bij je NextCloud uitkomen.
Als je met curl -vvv damianweb.nl:80 kijkt zie je waarschijnlijk beter wat er aan de hand is.
Edit: voor zover ik kan zien draait daar überhaupt niks. Portforward vergeten misschien? HTTPS werkt wel "prima". Je hebt ook een Listen 80 in je config?

[ Voor 9% gewijzigd door DataGhost op 23-06-2021 14:32 ]


Acties:
  • 0 Henk 'm!

  • Jorick
  • Registratie: November 2001
  • Laatst online: 20-05 10:15
De HSTS-header zoals die in de openingspost staat zou enkel moeten gelden voor het domein damianweb.nl en niet voor subdomeinen want die instelling ontbreekt (gelukkig). Daar komt bij dat de browser alleen wat doet met die header als er geen fouten zijn m.b.t. het certificaat. In de configuratie zoals die in het openingstopic staat lijkt dit niet het geval te zijn geweest en werd Nextcloud geserveerd op damianweb.nl inclusief HTST-header én een certificaat voor het subdomein nc.damianweb.nl. Met andere woorden: in die configuratie deed die HSTS-header niets en werd je doorgestuurd door de RewriteRule in nextcloud.conf.
Pagina: 1