Apache2 서버에서 HTTPS를 활성화 한 후 모든 요청에서 404 오류가 발생 함


10

좋아, 그래서 나는 이전에 SSL / HTTPS에 대한 경험이 없었으며, 표준 HTTP 만 다루었습니다. 최근에 SSL이 필요한 사이트에서 작업을 시작했습니다. 물론, 나는 나가서 시작하는 방법을 연구했습니다. SSL 인증서를 성공적으로 설치하는 단계에 도달했습니다. 녹색 자물쇠가 나타나고 서버가 포트 443에서 HTTPS 요청에 응답합니다. 내가 가진 문제는 내가 무엇을하든 HTTPS / 그러나 SSL은 포트 80 / HTTP에서 정상적으로 나타납니다 (HTTP를 HTTPS로 리디렉션 할 때까지).

간단히 말해서 HTTPS 사이트에 절대적으로 액세스 할 수는 있지만 페이지가 전송되지 않고 모든 요청에 ​​대해 404가 전송됩니다.


/etc/apache2/sites-available/[name].conf

<VirtualHost *:80>
    ServerName [serverName]

    RewriteEngine On

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
</VirtualHost>

<VirtualHost *:443>
    ServerName [serverName]
    ServerAdmin [email]
    DocumentRoot [docRoot]

    # I know the following SSL cert stuff is correct

    SSLEngine On
    SSLCertificateFile [...]/[domain].crt
    SSLCertificateKeyFile [...]/[certificate].key
    SSLCertificateChainFile [...]/[theotherone].crt

    ErrorLog ${APACHE_LOG_DIR}/[custom]_error.log
        CustomLog ${APACHE_LOG_DIR}/[custom]_access.log combined

        <Directory "[docRoot]">

                Options Indexes FollowSymLinks MultiViews

        AllowOverride All
        Order allow,deny
        allow from all

        </Directory>

</VirtualHost>

보고 싶은 것이 있거나 다른 세부 사항이 있는지 확실하지 않지만 알려주세요.

편집하다:

구성 파일에서 일부 검색을 한 후 HTTPS에 연결할 때 서버가 기본 구성 (/ var / www /)에서 문서 루트를 사용하지만이 기본 구성은 a2ensite에서 사용하도록 설정되지 않았습니다. 이것을 일으키는 구성이 어디에 있는지 알 수없는 것 같습니다.


당신의 Rewrite당신이 심하게 구성 리버스 프록시 뒤에 아파치를 실행하려고처럼 지시어 보인다. Apache가 프록시없이 도메인을 직접 제공하는 경우 모든 Rewrite지시문을 삭제 하고 단일 지시문으로 바꿔야합니다 Redirect. 각 요청에 대해 VirtualHost어떤 VirtualHost프로세스를 정확하게 볼 수 있도록 각각에 대해 별도의 로그 파일을 구성 하십시오 .
kasperd

Rewrites에 관해서는, 나는 일시적인 refirect를 얻기 위해 그것들을 사용하고 있었고 (나는 그 단계에서 100 % 확신하지 못했습니다), Redirect가 완벽하게 그 능력을 가지고 있음을 알게되었습니다. ). 별도의 로그 파일과 관련하여 이후에 수행했습니다. 또한 문제가 무엇인지 파악했으며이를 반영하여 업데이트합니다.
Michael Longhurst

답변:


11

모든 http 요청을 https로 리디렉션해야합니까? 그게 당신이 여기서하려고하는 것 같습니다.

conf에서 다음 줄을 제거하여 시작하는 것이 좋습니다.

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

구문이 잘못되었을 수 있습니다. 그런 다음 각 http : // 및 https : // 프로토콜에서 다시 연결하십시오.


이 도메인에서 관리자 패널을 만들고 있으므로 거의 모든 요청에 ​​민감한 정보가 포함되어 있기 때문에 모든 HTTP가 HTTPS로 리디렉션되도록하겠습니다. 리디렉션이 완벽하게 작동하기 때문에 구문이 올바른 것을 알고 있습니다. 나는 문제가 서버에있는 파일을 찾고 있다는 것을 생각했다은 / var / www /에서 HTML 대신 내가 지정한 DocumentRoot에의
마이클 Longhurst

문서 경로가 리디렉션없이 작동합니까? 시도할만한 가치가있는 ...
Ivan Ivan

실패 할 경우 내가 먼저 시도 다른 답을주는거야, 전에 그것을 줄 것이다
마이클 Longhurst에게

시도해 보았지만 소용이 없습니다
Michael Longhurst 18:32에

좋아, * : 443의 별표를 서버의 실제 IP로 바꿔보십시오. 포트 80도 마찬가지입니다. 또한 문서 루트 경로의 구문을 확인하여 /로 시작해야합니다
Ivan

11

내가 어떻게 알아 냈는지 정확하게 기억할 수는 없지만 제안하는 곳을 우연히 발견했습니다.

<VirtualHost _default_:443>

대신에:

<VirtualHost *:443>

이를 대체 한 이후 SSL이 완벽하게 작동했습니다.


10

다음과 같이 파일을 편집하십시오.

이것이 여전히 필요한 경우 리디렉션을 추가하면 매우 기본적인 conf입니다.

이것이 작동하지 않으면 ssl.conf를 보여주십시오

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
       SSLCertificateFile [...]/[domain].crt
       SSLCertificateKeyFile [...]/[certificate].key
       SSLCertificateChainFile [...]/[theotherone].crt
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

아니요, 여전히 작동하지 않습니다. / var / www / html에 배치 한 임시 index.html이 계속 표시됩니다. 나는 conf의와 페이스트 빈을 연결하여야한다
마이클 Longhurst에게

:이 페이스트 빈입니다 pastebin.com/iwubgFye
마이클 Longhurst

변경 후 아파치를 다시 시작하고 있는지 확인하려면?
Anthony Fornito

예, 내가 다시 시작하는 모든 것
Michael Longhurst

상상할 수있는 CTRL + F를 실행하여 DocumentRoot가 "/ var / www / html"로 설정되어 있고 아무 것도 찾지 못한 곳을 찾기 위해 모든 구성 파일을 열었습니다. 내 인생 내가 아파치에서 읽는 이유를 알아낼 수 없습니다 그래서는 / var / www /에서 html로 그것은으로 이야기되지 않는 경우
마이클 Longhurst
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.