Apache 서버는 기본 도메인을 https로 리디렉션합니다.

Apache 서버는 기본 도메인을 https로 리디렉션합니다.

내 서버에는 CentOS 6.2 및 Apache를 실행하는 여러 도메인이 있습니다. 서버에 SSL 인증서가 설치되어 있고 정상적으로 실행되고 있습니다.

http://기본 도메인을 탐색할 때마다 해당 섹션을 표시하기 위해 도메인을 추가하지 않습니다 https.

예를 들어:

내가 입력하면 대신 페이지가 mydomain.com 표시됩니다 .httpsprivate_html/index.htmlpublic_html/index.html

내가 입력 http://mydomain.com하거나 http://www.mydomain.com 올바른 페이지가 표시 되면public_html/index.html

내가 입력 https://mydomain.com하거나 https://www.mydomain.com 올바른 페이지가 표시 되면private_html/index.html

문제는 httpor https부분을 생략하면 항상 그 부분이 나온다는 점입니다 https. 나는 그 반대를 원한다. https아파치가 가고 싶을 때가 아니라 가고 싶을 때 갑니다 .

원인은 무엇일까요?

httpd.conf도메인 이름 입니다

<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>

도움을 주시면 감사하겠습니다. 감사해요.

답변1

여기는아파치와는 아무 관련이 없습니다. http 서비스와 https 서비스가 서로 다른 포트에 있고 포트가 TCP/IP 헤더에 지정되어 있습니다.고객별. Apache는 임의로 선택하지 않고 특정 포트에서 이루어진 특정 요청에 응답하여 수행해야 하는 작업을 수행할 뿐입니다.

즉, 주소 표시줄에 직접 입력하고 프로토콜(http, ftp, https...)을 생략하면 웹 클라이언트(브라우저)는 https를 선택합니다. 사이트 기록이 있는 경우 브라우저는 내부 목록에서 일치하는 항목을 선택합니다.

이는 사이트 내의 링크가 아닌 주소 표시줄에 입력할 때만 발생하지만 사이트를 레이아웃하는 것이 좋습니다.중복된 경로 없음혼동을 피하기 위해 다른 프로토콜로 사용합니다. 동일한 도메인 이름을 계속 사용할 수 있습니다. https://my.domain/secure/rest-of-path경로 시작 부분( )에 "secure"를 추가하기만 하면 됩니다. Apache가 제공하는 것이 https와 http에 대해 동일해야 하는 경우, 최종 사용자와 웹 클라이언트가 볼 수 있도록 심볼릭 링크 또는 mod_rewrite(저는 적절하다고 생각합니다. 저는 아파치 전문가는 아닙니다)를 사용합니다. 이들 경로는 다릅니다. .

할 수 있는http 요청을 https 포트로 리디렉션하거나 그 반대로 리디렉션하도록 아파치를 설정하세요. 그러나 실제로 그렇게 하는지 알게 될 것입니다. 서버 로그에서 이러한 리디렉션의 증거를 찾을 수도 있으며, Wireshark의 트랜잭션을 보면 확실히 찾을 수 있습니다.

HTTP 트랜잭션을 디버깅하고 이해하려면 Wireshark를 사용하는 것이 좋습니다. 원본 및 대상 포트는 전송 제어 프로토콜 아래에 있습니다. 이는 수신자가 아닌 발신자가 설정합니다. 80은 일반적으로 http로 간주되고 443은 https로 간주됩니다. 어느 포트에나 비표준 포트를 사용할 수 있지만 이 경우 일반 네트워크 클라이언트는 사용할 포트를 명시적으로 알려야 하며( :NNN예를 들어 주소를 추가하여 https://my.domain:4040/path) 서버는 해당 포트를 명시적으로 제공하도록 분명히 구성되어야 합니다. 땅도 그렇고.

답변2

오늘날의 하드웨어를 고려하면 HTTPS의 추가 비용은 최소화됩니다. 일부 사이트에서는 구성 사용을 권장하기도 합니다.오직HTTPS 버전인 경우 다른 버전은 자동으로 해당 버전으로 리디렉션됩니다. 안전하지 않은 HTTP 프로토콜을 사용해야 하는 이유는 무엇입니까?

관련 정보