Apache VirtualHost Root-, WWW- und Subdomain-Setup einschließlich http bis https
Ich stecke ziemlich fest. Würde mich über Hilfe freuen.
Zwei Websites (WordPress und ein anderes PHP-Tool) auf einer AWS EC2 Ubuntu 18.04-Instanz, auf der der LAMP-Stack ausgeführt wird.
Meine Absicht ist es zu erreichen:
http://www.example.com
http://example.com
https://www.example.com
zu : https://example.com
.
UND
http://app.example.com
zu : https://app.example.com
.
Ich hatte virtualhost so konfiguriert und funktionierte wie beabsichtigt. Dann erstellte ich das https-Zertifikat über letsencrypt, mit dem die HTTP-zu-HTTPS-Weiterleitungen eingerichtet wurden.
HTTP alle leiten zu HTTPS um.
https://app.example.com
wird auf die beabsichtigte Website aufgelöst - website1.
https://example.com
wird nicht in website2 aufgelöst - es wird in website1 aufgelöst - beachten Sie, dass es nicht zur App umgeleitet wird. aber zeigt website1 auf https://example.com
.
Ich habe zwei virtualhost conf-Dateien, eine für jede Site. Beide enthalten jeweils die Konfiguration der Standorte 80 und 443, sie sind unten aufgeführt.
Das SSL - Zertifikat hat den gemeinsamen Namen example.com und Listen alternativer Namen für app.example.com
, www.example.com
und example.com
.
DNS hat example.com A
zu - Server - IP, www.
und app.
sind CNAME
zu example.com
.
app.example.com.conf - Website 1
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/website1/
ServerName example.com
ServerAlias app.example.com
<Directory /var/www/website1/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =app.example.com [OR]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/website1
ServerName example.com
ServerAlias app.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/website1/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
example.com.conf - Website 2
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/website2
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/website2/>
AllowOverride All
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/website2
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/website2/>
AllowOverride All
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/website2
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/website2/>
AllowOverride All
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/website2
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/website2/>
AllowOverride All
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
Ich würde mich über jede Hilfe, Anregungen und andere Ideen sehr freuen!
Antworten
https://example.com
wird nicht in website2 aufgelöst - es wird in website1 aufgelöst - beachten Sie, dass es nicht zur App umgeleitet wird. aber zeigt website1 aufhttps://example.com
Ja, da alle Ihre vHosts example.com
als definiert sind ServerName
und ich erwarte, dass website1 zuerst in der Konfiguration angezeigt wird.
Für app.example.com.conf (Website 1) sollten Sie ServerName app.example.com
die ServerAlias
Direktive für die Container vhost: 80 und vhost: 443 insgesamt festlegen und entfernen .
Die HTTP-zu-HTTPS-Umleitung im Container vhost: 80:
RewriteEngine on RewriteCond %{SERVER_NAME} =app.example.com [OR] RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Kann zu einer einzigen mod_alias- Redirect
Direktive vereinfacht werden :
Redirect 301 / https://app.example.com/
Zum Beispiel.com.conf (Website 2) haben Sie die Container vhost: 80 und vhost: 443 dupliziert und jeweils definiert ServerName example.com
- dies ist ein Fehler. Es ist durchaus möglich, 4 Container wie diesen zu haben (und mod_alias- Redirect
Direktiven zu verwenden), aber Sie würden ServerName
für jeden vHost eindeutige Direktiven benötigen und die Wiederholung reduzieren.
Aus Ihrer Sicht ist es wahrscheinlich am einfachsten, den zweiten (doppelten) Container vhost: 80 und vhost: 443 zu entfernen und in den verbleibenden Containern vhost: 80 und vhost: 443 Folgendes festzulegen.
ServerName example.com
ServerAlias www.example.com
Ich habe dann das https-Zertifikat über letsencrypt erstellt, das die HTTP-zu-HTTPS-Weiterleitungen einrichtet
Das Erstellen des SSL-Zertifikats mit LetsEncrypt sollte nicht "HTTP-zu-HTTPS-Weiterleitungen einrichten" haben.