it-swarm.com.de

Stellen Sie http (Port 80) und https (Port 443) auf demselben VirtualHost bereit

Ich muss meinen VirtualHost auf Apache einrichten, damit er sowohl auf http als auch auf https (unter Verwendung von Standardports) bereitgestellt werden kann.

Wenn ich die SSL-Engine aktiviere (siehe unten), wird an Port 80 eine Fehlermeldung angezeigt.

Der Grund dafür ist, dass Teile der Site SSL sein müssen, andere jedoch nicht. Wie kann ich beide http + https auf der Website bereitstellen?

Hier ist meine virtuelle Host-Datei ....

NameVirtualHost *

<VirtualHost *>
        ServerAdmin [email protected]
        ServerName mysite.co.uk
        DocumentRoot /var/www/mysite/public
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/mysite/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/Apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/Apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

     #SSL STUFF...
      SSLEngine on
      SSLCertificateFile /etc/Apache2/crts/mysite.crt
      SSLCertificateKeyFile /etc/Apache2/crts/mysite.key
      SSLCertificateChainFile /etc/Apache2/crts/DigiCertCA.crt


</VirtualHost>
31
kron

Sie können dies nicht in einem virtuellen Host tun, da Apache wissen muss, welcher SSL sprechen wird und welcher nicht (Nebenbemerkung: nginx hat dieses Problem nicht, Sie können ihm sagen, welche Listen-Direktiven sich auf SSL beziehen; einer der vielen Gründe, warum ich es liebe).

Die Art und Weise, wie ich dies in Apache verwalte, besteht darin, alle meine nicht SSL-bezogenen Konfigurationen in einer separaten Datei abzulegen und dann die beiden vhosts nebeneinander zu konfigurieren, wobei jede die standortspezifische Konfigurationsdatei in der vhost-Zeilengruppe enthält ::

<VirtualHost 192.0.2.12:80>
    Include /etc/Apache2/sites/example.com
</VirtualHost>

<VirtualHost 192.0.2.12:443>
    SSLEngine On
    # etc
    Include /etc/Apache2/sites/example.com
</VirtualHost>
45
womble

Es scheint ein Problem in Apache vHost zu sein, aber es erledigt den Job, ohne die Konfiguration wiederholen zu müssen.

SSLCertificateFile /srv/.ssl/self/server.crt
SSLCertificateKeyFile /srv/.ssl/self/server.pem

# REQUIRED
<VirtualHost *:80>
    DocumentRoot /srv/www/badhost
</VirtualHost>

<VirtualHost *:80 *:443>
    SSLEngine On
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /srv/www/example.www
</VirtualHost>
7
VarunAgw