Waitress 및 NGINX를 사용하여 HTTPS를 통해 Flask 앱을 실행하는 방법 2022년 업데이트.
기본 단계는 다음과 같습니다.
이 가이드에서는 이미 Flask 앱이 실행 중이라고 가정합니다. 그렇지 않은 경우 간단한 Flask 앱이 있습니다.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1 style='color:blue'> A very simple flask server !</h1>"
if __name__ == "__main__":
#app.run(host='0.0.0.0')
이것을 실행하면 다음이 제공됩니다.
좋습니다. Flask 앱을 실행 중입니다. 이 서버를 사용하지 않는 이유는 무엇입니까? 플라스크 문서당:
가볍고 사용하기 쉬운 반면 Flask의 내장 서버는 확장성이 좋지 않아 프로덕션에 적합하지 않습니다. 프로덕션 환경에서 Flask를 올바르게 실행하는 데 사용할 수 있는 옵션 중 일부는 여기에 문서화되어 있습니다.'
이에 대한 가장 간단한 해결책 중 하나는 Waitress을 사용하는 것입니다. 공식 가이드를 직접 읽어보세요. 하지만 이 예에서는 약간의 변경만 하면 됩니다. 먼저 Waitress를 설치합니다.
$ pip install waitress
다음으로 Waitress를 사용하고 있음을 알리기 위해 Flask 앱을 일부 변경해야 합니다.
from flask import Flask
#we import waitress here.
from waitress import serve
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1 style='color:blue'> A very simple flask server !</h1>"
if __name__ == "__main__":
#app.run(host='0.0.0.0')
#We now use this syntax to server our app.
serve(app, host='0.0.0.0', port=5000)
이제 생산 준비가 완료된 서버에서 Flask 앱을 실행했습니다. 그러나 우리는 여전히 SSL이 필요합니다. 아직 없는 경우 Certbot을 사용하거나 자체 서명된Cert을 사용할 수 있습니다.
(업데이트: Ömer Faruk Sancak 덕분에)
다음 명령을 실행하여 SSL을 얻거나 건너뛰고 자체 프로세스를 수행하십시오.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
letsencrypt certonly -a webroot --webroot-path=/var/www/yourdomain.com/html/ -d yourdomain.com -d www.yourdomain.com
Flask 앱을 마지막으로 변경합니다. https를 사용할 것임을 웨이트리스에게 알려야 합니다. Documentation . 앱에
url_scheme='https'
를 추가합니다.from flask import Flask
from waitress import serve
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1 style='color:blue'> A very simple flask server !</h1>"
if __name__ == "__main__":
#app.run(host='0.0.0.0')
serve(app, host='0.0.0.0', port=5000, url_scheme='https')
이제 SSL이 있고 NGINX를 사용할 준비가 되었습니다. 아직 설치하지 않은 경우here 설정 방법입니다.
웹 서버 규칙은 다음 위치에 있습니다.
etc/nginx/sites-available/default
거기에 CD를 넣고 예제를 삭제하십시오.
이것이 우리의 규칙이 될 것입니다. 메모
example.com & your.ip
이것은 귀하의 도메인/서버 주소를 사용하는 예일 뿐입니다.
server {
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
server_name example.com;
location / {
proxy_pass http://your.ip.adress:5000;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name example.com;
return 302 https://$server_name$request_uri;
}
이 줄에 참고하십시오.
proxy_pass http://your.ip.adress:5000;
다른 포트에서 앱을 실행 중인 경우 이러한 포트가 일치하는지 확인해야 합니다. 예를 들어 포트 3000을 사용하는 경우
proxy_pass http://your.ip.adress:3000;
자, 모든 설정이 끝났습니다. 하지만 NGINX에 알려야 하므로 이렇게 서버를 다시 시작합니다.
sudo systemctl status nginx
새로 고침하면 SSL로 실행 중인 새 서버가 표시됩니다.
Reference
이 문제에 관하여(Waitress 및 NGINX를 사용하여 HTTPS를 통해 Flask 앱을 실행하는 방법 2022년 업데이트.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thetrebelcc/how-to-run-a-flask-app-over-https-using-waitress-and-nginx-2020-235c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)