2016-08-26 4 views
0

Ich versuche gerade, meine Apache-Konfiguration zu setzen. Ich habe eine IP (zB 10.10.10.10) und eine Domain (zB www.mydomain.com).Apache dieselbe Domäne multi virtueller Host

Dieser Server ist derzeit Hosting-2-Sites und jeder Standort hat seine eigene Apache Instanz mit seinem eigenen conf und php.ini:

/appli/projects/project1/apache_2.4/conf/project1.conf => Seite 1

/appli/projects/project2/apache_2.4/conf/project2.conf => Seite 2

project1.conf ist so (gleiche mit 443 für SSL) gesetzt:

<VirtualHost 10.10.10.10:80> DocumentRoot /appli/projects/project1/apache_2.4/htdocs/project1folder/ ServerName mydomain.com </virtualHost>

project2.conf ist so (gleiche mit 453 für SSL) gesetzt:

<VirtualHost 10.10.10.10:90> DocumentRoot /appli/projects/project2/apache_2.4/htdocs/project2folder/ ServerName mydomain.com </virtualHost>

Also, wenn ich eine Verbindung zu "mydomain.com" Ich werde auf "Seite 1", aber ich müssen getroffen mydomain.com:453 für den Zugriff auf „Seite 2“, das ist nicht wirklich gut ...

ich so etwas haben möchte:

mydomain.com/site1 => „Seite 1“ (oder site1.mydomain.com)

mydomain.com/site2 => "Site 2" (oder site2.mydomain.com)

Und ich würde die "Seite 1" zu halten, wie die mydomain.com schlagen.

Leider, da jede Seite ihre eigene Instanz von Apache hat, habe ich keine Ahnung, wie man sie setzt.

Last but not least Ich würde gerne wissen, ob es möglich ist, PHP (Apache) SESSION über die multi Apache Instance zu teilen oder wenn ich COOKIES über die Domain verwenden muss, um Informationen zwischen den Sites zu teilen.

Ich weiß nicht, ob es wirklich klar ist, fragen Sie einfach, ob Sie mehr Informationen benötigen.

Vielen Dank im Voraus.

+0

Was versuchen Sie zu erreichen? Wenn du 'mydomain.com/site1' und' mydomain.com/site2' willst, warum zeigst du 'mydomain.com' nicht einfach auf einen Ordner mit' site1' und 'site2' in zwei verschiedenen Ordnern? Keine Notwendigkeit für mehrere Instanzen oder sogar mehrere VHosts? –

+0

Btw .. Sie sollten wirklich alle Tags außer 'Apache' entfernen .. .this Frage ist rein über Apache Config ... nichts anderes ... –

+0

Ich habe andere Tags entfernt. Dachte es könnte auch andere Dinge bedauern. Meinst du, ich sollte "Site 1" und "Site 2" in denselben Htdocs setzen? Ich hatte das Gefühl, dass es schlauer war, Multi-Apache-Instanz zu verwenden, falls einer ausfallen sollte, der andere nicht betroffen war ... – Dabeliuteef

Antwort

1

Meine Empfehlung ist dies:

Dateistruktur:

htdocs/ 
    site1 
     ...files... 
    site2 
     ...files... 

Apache vhost:

<VirtualHost 10.10.10.10:80> 
    DocumentRoot /appli/projects/project1/apache_2.4/htdocs/ 
    ServerName example.com 
</virtualHost> 

... und dann das gleiche tun für die SSL- vhost.

Jetzt können Sie http://example.com/site1 und http://example.com/site2 und das gleiche für https verwenden.

Wenn Sie andere Ports als die Standardwerte 80 und 443 verwenden, müssen Sie explizit die Portnamen schreiben, um auf die Sites zugreifen zu können, oder einen Reverse Proxy einrichten (zusätzliche Komplexität ohne echte Verstärkung) .)

Sie können auch spezielle Regeln für site1 und site2 in Ihrem vhost definieren

Config pro Seite:.

<VirtualHost 10.10.10.10:80> 
    DocumentRoot /appli/projects/project1/apache_2.4/htdocs/ 
    ServerName example.com 

    <Directory /appli/projects/project1/apache_2.4/htdocs/site1/> 
     # Some specific vhost config... 
    </Directory> 

    <Directory /appli/projects/project1/apache_2.4/htdocs/site2/> 
     # Some specific vhost config... 
    </Directory> 

</virtualHost> 

Wenn Sie verschiedene Subdomains wie: site1.example.com und site2.example.com möchten, dann führen Sie einfach andere vhosts aus, die direkt auf die Ordner zeigen, immer noch Port 80 für HTTP und Port 443 für HTTPS verwenden.

Denken Sie daran, dass Sie dann ein Multi-Domain-Zertifikat oder ein Wildcard-Zertifikat für https haben müssen (da es sich um zwei verschiedene Hostnamen handelt). Oder Sie könnten Let's Encrypt installieren.

+0

Es scheint mit Ihrer Lösung sauberer. Erlaubt es mir, "SESSIONS" und/oder "COOKIES" zwischen allen Standorten zu teilen? Ist es auch möglich, etwas wie 'www.exemple.com' zu tun, wird auf eine Login-Seite gehen (wie' www.exemple.com/login.php') und dann auf 'www.exemple.com/site1/ umgeleitet. index.php' nach der Verbindung. und wenn jemand versucht, auf 'www.exemple.com/site1' oder' '/ site2' zuzugreifen, ohne protokolliert zu werden, wird er auf' www.exemple.com/login.php' umgeleitet. – Dabeliuteef

+0

Ja, es sollte funktionieren. Apache sieht es nur als eine Seite –

+0

Schön, es funktioniert, danke Ihnen;) – Dabeliuteef

Verwandte Themen