Gunicorn、Nginx、およびLet's Encrypt
を使用してセキュアフラスコアプリケーションを展開しますFlaskは、Webアプリケーションを構築するためのPythonフレームワークです。 Flaskを使用すると、開発者はルーティングを簡単に定義し、HTTPリクエストと応答を処理し、JINJA2テンプレートを使用して動的コンテンツをレンダリングできます。また、開発者がデータベースアクセス、フォーム処理、ユーザー認証などの機能を統合できるようにする拡張機能もサポートしています。
この記事では、Gunicornを使用してFlaskアプリケーションを展開し、CSRF保護およびコンテンツセキュリティポリシー(CSP)を実装する方法について説明します。また、Nginxを使用して逆プロキシを設定し、Let's暗号化を介してHTTPSを実装して無料のSSL証明書を申請します。
Vultr-Optimized Cloudインスタンスに展開
DEMOアプリケーションコードファイルを追加
sudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
DEMOアプリケーションコードファイルを追加
git clone https://github.com/mayankdebnath/flask-todo-demo.git
cd flask-todo-demo/sample/
フラスコとグニコーンのパッケージのインストール:pip install flask gunicorn
ポート5000への着信接続を許可します:ufw allow 5000
コンテンツセキュリティポリシー(CSP)は、悪意のある攻撃から保護するWebアプリケーションのセキュリティの追加レイヤーです。 CSPは、ブラウザが特定のWebページにロードできるリソースを示します。通常、Webサイト管理者は、Webページのサーバー応答に特別なヘッダーを追加してCSPを構成し、ブラウザはCSPヘッダーを受信し、どのリソースがロードできるかを理解します。 Talismanは、FlaskアプリケーションにCSPを追加するプロセスを簡素化するフラスコ拡張機能です。
pip install flask-wtf talisman
nano app.py
from talisman import Talisman talisman = Talisman( app, content_security_policy={ 'default-src': ['\'self\''], 'script-src': ['\'self\'', '\'unsafe-inline\'', 'https://code.jquery.com'], 'style-src': ['\'self\'', '\'unsafe-inline\'', 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css', 'https://todoapp5.ddns.net/static/styles.css', 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css'], }, force_https=True, session_cookie_secure=True, frame_options='DENY', )
from flask_wtf.csrf import CSRFProtect app.config['SECRET_KEY'] = 'your_secret_key_here' csrf = CSRFProtect(app) csrf._csrf_request_token_key = 'X-CSRFToken'
nginxは、Webサーバーとクライアントの間の逆プロキシとして機能します。リクエストの構成設定に基づいて、着信要求を起動します。このセクションでは、効率的なリクエスト処理と負荷分散のために逆プロキシのためのアプリケーションを構成します。また、Let's Encryptからの無料のSSL証明書を申請してHTTPSを実装し、ユーザーとWebサーバー間の通信を保護します。
Vultr Customer Portalにログインします。
ubuntu 24.04にpythonとpipをインストールします
python
この記事はVultrが後援しています。 Vultrは、世界最大のプライベートクラウドコンピューティングプラットフォームです。 Vultrは開発者に愛されており、185か国で150万人以上の顧客に柔軟でスケーラブルなグローバルクラウドコンピューティング、クラウドGPU、ベアメタル、クラウドストレージソリューションを提供しています。 Vultrの詳細 以上がFlaskアプリケーションをVultrに展開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
cd templates
nano index.html
var csrfToken = $('input[name="csrf_token"]').val();
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrfToken);
}
}
});
cd ..
nginxを逆プロキシとして構成製品ページに移動します。
仮想ホストの構成をアクティブにします:ns1.vultr.com
nginxのインストール:ns2.vultr.com
sudo apt install nginx
sudo nano /etc/nginx/sites-available/app.conf
server {
listen 80;
listen [::]:80;
server_name <your_domain>;
location / {
proxy_pass http://127.0.0.1:5000/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
コンテナ化Python Webアプリケーションsudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
sudo snap install --classic certbot
Gunicorn Serverを起動:sudo certbot --nginx -d example.com -d www.example.com
gunicorn -b 0.0.0.0:5000 app:app
https://<your_domain></your_domain>
VultrのPythonアプリを使用して詳細を実行します
PythonおよびMilvus Vectorデータベースを使用したAI駆動型検索