2014-03-27 6 views
0

SSL에서 실행되도록 Flask를 설정하고 모든 HTTP 트래픽을 HTTPS로 리디렉션하려고합니다.Flask에서 SSL을 사용하는 방법

현재 웹 서버로 Apache를 사용하고 있으며 포트 80 HTTP에서 트래픽을 올바르게 처리하고 있습니다. 그러나 포트 80 VirtualHost에서 구성을 포트 443으로 이동하고 포트 80에 대한 리디렉션을 설정하면 리디렉션이 작동하지만 Apache는 Apache 테스트 페이지를 계속 표시하고 Flask 응용 프로그램을 제공하지 않습니다. 오류 로그에 아무 것도 표시되지 않습니다. 유일한 오류는 Directory index forbidden by Options directive: /var/www/html입니다. 나는/var/www/html을 사용하지도 않는다. 그리고 이것은 오래된 브라우저에 대한 대부분의 경고 다. 여기

내 아파치 가상 호스트 설정 :

LoadModule wsgi_module modules/mod_wsgi.so 
WSGISocketPrefix run/wsgi 

NameVirtualHost *:80 
<VirtualHost *:80> 
     RewriteEngine On 
     RewriteCond %{HTTPS} off 
     RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</VirtualHost> 

NameVirtualHost *:443 
<VirtualHost *:443> 
    SSLEngine on 
    SSLEngine on 
    SSLCertificateFile <<FILE PATH>> 
    SSLCertificateKeyFile <<FILE PATH>> 
    SSLCertificateChainFile <<FILE PATH>> 
    SSLProtocol all -SSLv2 
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 

    WSGIPassAuthorization On 
    WSGIDaemonProcess api processes=4 threads=1 
    WSGIProcessGroup api 
    WSGIScriptAlias//usr/local/app/api/current/conf/application.wsgi 

    AddType text/html .py 

    <Directory /usr/local/app/api/current/> 
    Order deny,allow 
    Allow from all 
    </Directory> 
</VirtualHost> 

그것은 어떤 문제가 있습니까? 모든 WSGI와 Directory 라인을 포트 80에 복사하고 443을 복사하면 제대로 작동합니다.

+0

... 아마도 플라스크 키워드를 제거 플라스크를? – thclark

답변

3

이 질문은 슈퍼 유저에 속합니다.

Btw 그것은 플라스크 관련이 아닙니다. VirtualHost 정의에 DocumentRoot 지시어가 누락되었습니다. Apache는 기본값 인 /var/www/html을 사용합니다.

+0

DocumentRoot가없는 다른 응용 프로그램을 실행하고 있는데 여전히 작동합니다. 사실 http://flask.pocoo.org/docs/deploying/mod_wsgi/에는 DocumentRoot가 전혀 언급되어 있지 않습니다. 나는 이것을 수퍼 유저에게 대신 게시 할 것이다. 감사. – darksky

0

Checkout SSlify. this 작은 플라스크 확장을 사용하면 모든 트래픽이 HTTP에서 HTTPS로 리디렉션됩니다.

당신이 할 일은 당신의 플라스크 응용 프로그램 초기화 할 때 다음 사항을 실행하는 것입니다 : 정말 관련되지

from flask import Flask 
from flask_sslify import SSLify 

app = Flask(__name__) 
sslify = SSLify(app) 
관련 문제