3

apache2를 웹 서버로 사용하여 내 웹 사이트 파일이 제대로 설치되어있는 ec2 인스턴스가 있습니다. ec2는 포트 80에서만 HTTP 트래픽을 수신하도록 구성됩니다 (100 %는 아니지만 거의 확실합니다). elb에는 https 리스너 (포트 443) 및 http 리스너 (포트 80)가 있습니다. elb는 aws docs에 따라 데이터를 암호 해독 한 후 ec2 인스턴스로 트래픽을 전송합니다. 내 문제는 모든 트래픽을 https 인 http 인로드 밸런서로 리디렉션하는 방법을 파악할 수 없다는 것입니다.Apache2가 https로 리디렉션되지 않음

사이트의 가상 호스트와 apache2.conf에서이 다시 쓰기 규칙을 사용했지만 모든 종류의 영향 (오류 없음)이 없습니다.

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} 

전체 가상 호스트 (/etc/apache2/sites-available/SewaneeEats.conf에 위치)과 같습니다

ServerName classicloadbalancer-1929710381.us-east-1.elb.amazonaws.com 
ServerAdmin [email protected] 
DocumentRoot /var/www/html/SewaneeEats/public 

<Directory /var/www/html/SewaneeEats> 
    RewriteEngine On 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} 
    AllowOverride All 
</Directory> 

ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined 

나는 또한 확인할 수 있습니다 해당 모듈 다시 쓰기가 활성화됩니다.

그래서 내가 uran sewaneeeats.com을 입력하면 (이 링크는 확인해야하는 경우 생방송입니다.) 리디렉션하지 않고서도 sewaneeeats.com (ssl이없는 경우)이됩니다. 나는 SSL이 https://www.sewaneeeats.com에서 일하고 있다는 것을 알고있다. https://sewaneeeats.com에서 크롬의 URL 표시 줄에 깨진 ssl 빨간색 기호가 표시됩니다. 나는 그것이 https://sewaneeeats.com URL에 깨진 이유는 인증서가 www 하위 도메인에 등록 되었기 때문에라고 생각하지만 확실하지 않습니다. 도메인은 aws의 라우트 53 콘솔을 사용하여 구성되므로 도움이된다면 그에 대한 정보를 제공 할 수 있습니다.

약 12 ​​시간 정도 동안 이것을 알아 내려고 노력했기 때문에 도움이된다면 도움이 될 것입니다. 이 질문은 serverfault.com에 올렸지 만 10 인 이하의 질문에 대해서는 2 개의 링크 만 있기 때문에 할 수 없습니다.

+0

여기에서 sewaneeeats.com은 www.sewaneeeats.com으로 리디렉션됩니다. SSL 인증서에 관해서는 아마존에서 발급 한 인증서를 사용하고 있습니다. 인증서에 aditional 도메인 이름을 추가 할 수 있습니다. sewaneeeats.com과 www.sewaneeeats.com을 모두 추가하십시오 (새 인증서를 만들어야 할 수도 있음) – at0mzk

+0

@ at0mzk 다시 쓰기 규칙은 사이트의 가상 호스트 구성 파일 (/etc/apache2/sites-available/SewaneeEats.conf 파일)에 있습니다. – Daniel

+1

@ at0mzk 나는 모든 하위 도메인과 기본 도메인을 추가 한 새로운 인증서를 작성했습니다. 이 팁을 가져 주셔서 감사합니다! – Daniel

답변

-1

나는 일반적으로 HTTPS로 모든 트래픽을 리디렉션하려면 다음과 같은 규칙을 사용 : 당신이 가상 호스트에 대해 전역 규칙을 적용 할 경우

RewriteCond %{HTTPS} =off 
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] 

또한, 필요 지시 사이의 재 작성 규칙을 놓지 할 수 있습니다.

+0

도움을 주셔서 감사합니다. 그러나 이것은 효과가 없습니다. 탄력적 인로드 밸런서를 사용하고 있기 때문에로드 밸런서는 http를 통해 요청을 수신 할 때 x-forwarded-proto 헤더를 설정해야합니다. 그런 다음 apache2 conf 파일에서 위의 구성을 사용하여 요청을 다시 작성할 수 있어야하지만 효과가 없습니다. – Daniel