web-dev-qa-db-ja.com

同じVirtualHostでhttp(ポート80)とhttps(ポート443)を提供する

ApacheでVirtualHostをセットアップして、httpとhttpsの両方で機能するようにする必要があります(標準ポートを使用)

(以下のように)SSLエンジンを有効にすると、ポート80でエラーが発生します。

その理由は、サイトの一部はSSLである必要がありますが、その他の部分はSSLである必要はありません。サイトでhttp + httpsの両方を提供するにはどうすればよいですか?

これが私の仮想ホストファイルです。

NameVirtualHost *

<VirtualHost *>
        ServerAdmin webmaster@localhost
        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

1つの仮想ホストでこれを行うことはできません。Apacheは、SSLを通信するのか、通信しないのかを知る必要があるためです(補足:nginxにはこの問題がないので、SSLに関連するリスンディレクティブを指定できます。私がそれを愛する多くの理由の1つ)。

Apacheでこれを管理する方法は、SSLに関連しないすべての構成を別のファイルに入れ、次に2つのvhostを隣り合わせに構成し、それぞれにvhostスタンザ内にサイト固有の構成ファイルを含めます。 :

<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

これはApache vHostの問題のように見えますが、設定を繰り返す必要なく機能します。

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