O servidor Apache redireciona o domínio principal para https

3

Eu tenho este servidor com vários domínios executando o CentOS 6.2 e o Apache. Este servidor tem um certificado SSL instalado e funcionando bem.

Sempre que navego para o domínio principal, sem adicionar http:// , mostra a https parte.

Por exemplo:

Se eu digitar mydomain.com mostra a página https em private_html/index.html em vez de public_html/index.html

Se eu digitar http://mydomain.com ou http://www.mydomain.com mostra a página correta em public_html/index.html

Se eu digitar https://mydomain.com ou https://www.mydomain.com mostra a página correta em private_html/index.html

o problema é que, se eu omitir a parte http ou https , ela sempre mostrará a parte https . Eu quero o inverso. Eu quero ir para https quando eu quiser, não quando o apache quiser.

O que pode estar causando isso?

Este é o meu httpd.conf para este domínio

<VirtualHost 100.101.102.103:80 >
        ServerName www.mysite.com
        ServerAlias www.mysite.com mysite.com
        ServerAdmin [email protected]
        DocumentRoot /home/admin/domains/mysite.com/public_html
        ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/

        UseCanonicalName OFF

        <IfModule !mod_ruid2.c>
                SuexecUserGroup admin admin
        </IfModule>
        <IfModule mod_ruid2.c>
                RMode config
                RUidGid admin admin
                RGroups apache access
        </IfModule>

        CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
        CustomLog /var/log/httpd/domains/mysite.com.log combined
        ErrorLog /var/log/httpd/domains/mysite.com.error.log
        <Directory /home/admin/domains/mysite.com/public_html>
                Options +Includes -Indexes
                php_admin_flag safe_mode OFF
                php_admin_flag engine ON
                php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f [email protected]'

                php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
        </Directory>
</VirtualHost>


<VirtualHost 100.101.102.103:443 >
        SSLEngine on
        SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

        ServerName www.mysite.com
        ServerAlias www.mysite.com mysite.com
        ServerAdmin [email protected]
        DocumentRoot /home/admin/domains/mysite.com/private_html
        ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/

        UseCanonicalName OFF

        <IfModule !mod_ruid2.c>
                SuexecUserGroup admin admin
        </IfModule>
        <IfModule mod_ruid2.c>
                RMode config
                RUidGid admin admin
                RGroups apache access
        </IfModule>

        CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
    CustomLog /var/log/httpd/domains/mysite.com.log combined
        ErrorLog /var/log/httpd/domains/mysite.com.error.log

        <Directory /home/admin/domains/mysite.com/private_html>
                Options +Includes -Indexes

                php_admin_flag safe_mode OFF
                php_admin_flag engine ON
                php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f [email protected]'

            php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
        </Directory>
</VirtualHost>

qualquer ajuda é apreciada. Obrigado.

    
por SpaceDog 28.01.2013 / 11:06

2 respostas

2

Isso tem nada a ver com o apache . Seu serviço http e seu serviço https estão em portas diferentes, e essa porta é especificada no cabeçalho TCP / IP pelo cliente . O Apache não está fazendo uma escolha arbitrária, está apenas fazendo o que deve fazer em resposta a uma solicitação específica feita em uma porta específica.

Em outras palavras, é o seu cliente net (o navegador) que está selecionando https quando você digita diretamente na barra de localização e omite o protocolo (http, ftp, https ...). Se você tiver um histórico nesse site, o navegador selecionará uma correspondência da lista interna.

Embora isso deva acontecer apenas com a digitação na barra de localização e não com links dentro do site, provavelmente é uma boa idéia colocar o site sem caminhos duplicados em diferentes protocolos para evitar confusão. Você ainda pode usar o mesmo nome de domínio, por exemplo, adicionar "seguro" no início do caminho ( https://my.domain/secure/rest-of-path ). Se o conteúdo que o apache está servindo deve ser literalmente o mesmo para https e http, use links simbólicos ou mod_rewrite (acho que é apropriado, não sou um grande apache) para fazer isso para que o usuário final e o cliente da Web vejam esses caminhos são diferentes.

Você pode configurar o apache para redirecionar solicitações http para a porta https e vice-versa, mas você saberia se você tivesse feito isso. Você provavelmente também seria capaz de encontrar evidências de tal redirecionamento nos logs do servidor, e você certamente poderia encontrá-lo observando a transação no wireshark.

Eu recomendo usar o wireshark para depurar e aprender sobre transações HTTP. As portas "source" e "destination" estão em "Transmission Control Protocol". Estes são definidos pelo remetente, não pelo destinatário. 80 é normalmente considerado http e 443 é https. É possível usar portas não-padrão para qualquer uma, mas nesse caso um cliente de rede normal deve ser explicitamente informado sobre qual porta usar (adicionando :NNN ao endereço, por exemplo, https://my.domain:4040/path ), e obviamente o servidor deve ser configurado para atender essas portas explicitamente também.

    
por 28.01.2013 / 12:10
0

Dado o hardware de hoje, o custo extra do HTTPS é minúsculo; alguns sites até recomendam configurar usando somente a versão HTTPS, outros redirecionam para ele automaticamente. Por que você insiste em usar o protocolo HTTP inseguro?

    
por 28.01.2013 / 17:49