どのようにwaitressとnginxを使用して、HTTPSの上にフラスコアプリを実行します.2022年に更新.
HTTPSの上にフラスコアプリを実行すると、単純なエクササイズが、しかし、このトピックをカバーする多くの最新のガイドがないように思える.ここでは、私はHTTPSの上にフラスコアプリを実行するために取ったステップです.
ここに基本的な手順があります.フラスコのアプリを設定します. ウェイトレスで実行します. NGinxで逆プロキシを使用します. SSLを設定しました. nginxサーバのルールを設定します. このガイドでは、すでにフラスコのアプリをしていると仮定して実行します.ここではない場合は、単純なフラスコアプリです.
OK、我々は我々のフラスコアプリを実行している理由だけではなく、このサーバーを使用するか?文書ごとに:
'軽量ながら使いやすく、フラスコの内蔵サーバーは、それがよくスケールしないように生産に適していません.適切な実行中のフラスコに利用可能なオプションのいくつかはここで文書化されています
これに最も簡単な解決策の一つは、Waitressを使用して自由に自分の公式ガイドを読むことです.しかし、この例では、若干のマイナーな変更をする必要があるだけです.まずウェイトレスをインストールします.
(更新:Men Faruk Sananakに感謝)
これらのコマンドを実行してSSLまたはスキップして独自のプロセスを実行します.
当社のWebサーバのルールは
これらは私たちの規則です.ノート
ここに基本的な手順があります.
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')
これを実行すると、次のようになります.OK、我々は我々のフラスコアプリを実行している理由だけではなく、このサーバーを使用するか?文書ごとに:
'軽量ながら使いやすく、フラスコの内蔵サーバーは、それがよくスケールしないように生産に適していません.適切な実行中のフラスコに利用可能なオプションのいくつかはここで文書化されています
これに最も簡単な解決策の一つは、Waitressを使用して自由に自分の公式ガイドを読むことです.しかし、この例では、若干のマイナーな変更をする必要があるだけです.まずウェイトレスをインストールします.
$ pip install waitress
次に、我々はそれがウェイトレスを使用している知っているようにフラスコのアプリにいくつかの変更を行う必要があります.
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)
今我々は我々のフラスコアプリは、生産可能なサーバーを実行している.しかし、我々はまだ我々のSSLを必要とします.あなたがすでに1を持っていないならば、あなたはCertbotを使うことができるか、自己署名Certを使うことができます.(更新:Men Faruk Sananakに感謝)
これらのコマンドを実行して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
我々はフラスコのアプリに1つの最終的な変更を行います.我々は、ウェイトレスに我々が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をインストールする方法です.当社のWebサーバのルールは
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;
OK、すべての設定が行われます.しかし、我々はnginxを知っているようにする必要がありますので、我々のようにサーバーを再起動します.sudo systemctl status nginx
リフレッシュとSSLで動作する新しいサーバが表示されます.Reference
この問題について(どのようにwaitressとnginxを使用して、HTTPSの上にフラスコアプリを実行します.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