Como posso executar 2 hosts virtuais no Apache 2.4, onde um usa a porta 80 “no ssl” e o outro usa a porta 443 “ssl”?

1

Estou executando o Apache 2.4.18 no Windows Server 2008 R2 e no PHP 5.6.18.

Meu servidor Apache, por padrão, tem SSL ativado. Eu preciso rodar 2 sites diferentes onde um site usa SSL e o outro não.

Aqui está o que eu adicionei ao meu arquivo httpd-vhosts.conf na tentativa de fazê-lo funcionar

<VirtualHost *:80>
   ServerName SERVER1.example.com
   Redirect permanent "C:/phpsites/app1" https://sub1.example.com/
</VirtualHost>


<VirtualHost *:80>

    DocumentRoot "C:/phpsites/app2/public"
    ServerName SERVER1.example.com
    ServerAlias sub2.example.com

    SSLEngine Off

    <Directory "C:/phpsites/app2/public">
        AllowOverride All
        Require all Granted
    </Directory>

</VirtualHost>


<VirtualHost *:443>

    DocumentRoot "C:/phpsites/app1"
    ServerName SERVER1.example.com
    ServerAlias sub1.example.com

    SSLEngine On
    SSLCertificateFile "c:/Apache24/conf/certificate/cert.crt"
    SSLCertificateKeyFile "c:/Apache24/conf/certificate/private.key"

    <Directory "C:/phpsites/app1">
        AllowOverride All
        Require all Granted
    </Directory>

</VirtualHost>

A configuração acima não funciona corretamente. Quando vou para **https**://sub1.example.com , o Apache me redireciona para o site correto C:/phpsites/app1 . Quando vou para **http**://sub1.example.com , ele me redireciona para C:/phpsites/app2/public , mas não quero que isso aconteça. E quando vou para http://sub2.example.com , sou redirecionado para **https**://sub1.example.com por algum motivo.

Eu preciso direcionar qualquer usuário que esteja procurando http://sub1.example.com ou https://sub1.example.com a **https**://sub1.example.com .

E qualquer usuário que esteja procurando http://sub2.example.com ou https://sub2.example.com acessará **http**://sub2.example.com

Como posso fazer isso funcionar?

ATUALIZADO

Aqui está o que eu recebo quando executo httpd -D DUMP_VHOSTS

Configuração do VirtualHost:

*:80 is a NameVirtualHost


default server SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:27)
port 80 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:27)

port 80 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:34)
 alias sub2.example.com


*:443 is a NameVirtualHost
default server SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:52)
port 443 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:52)
 alias sub1.example.com

port 443 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-ssl.conf:85)
    
por Mike A 23.02.2016 / 23:44

1 resposta

0

When I go to http://sub1.example.com it redirects me to C:/phpsites/app2/public but I don't want that to happen.

É porque você tem apenas um host virtual http (padrão)

<VirtualHost *:80>

    DocumentRoot "C:/phpsites/app2/public"
    ServerAdmin [email protected]
    ServerName sub2.example.com
    ServerAlias sub2.example.com

    SSLEngine Off

    <Directory "C:/phpsites/app2/public">
        AllowOverride All
        Require all Granted
    </Directory>

</VirtualHost>

Você deve adicionar o virtualhost para sub1.example.com

<VirtualHost *:80>
   ServerName sub1.example.com
   Redirect 301 / https://sub1.example.com/
</VirtualHost>

A seguinte linha é realmente estranha

port 80 namevhost sub1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:43) alias sub2.example.com

Por que você está usando sub2 como alias em sub1 vhost?

    
por 24.02.2016 / 00:03