Flask × Nginx でWebサーバを構築してみた
今回は、自宅Linuxサーバ上で Flask + Nginx 構成のWebサーバを構築した記録を、シリーズ記事として残していきます。
この第1回では、完成形の概要を共有し、次回以降で導入技術ごとの詳細を解説します。
本シリーズの目標
- Nginxリバースプロキシを通してFlaskアプリを外部公開
- セキュリティ対策として UFW を活用したポート制限
- HTTPS(443)を Let’s Encrypt などで実装
なぜWebページを公開したのか?
今回Webサーバを外部に公開したのは、自分が学んだことを“見える化”したいと考えたからです。
最近キャリアを見直す中で、「転職活動を意識するなら、自分が勉強してきた内容をアウトプットとして残しておくことが大事」だと感じました。
Qiita記事やコードだけでなく、実際に動作するWebページを公開することで、自分の技術力をよりリアルに伝えられると考えたのが背景です。
また、公開することでモチベーションも上がり、今後はより面白い機能やUI改善なども取り入れて自分の技術力と同時に成長するWebサーバーとして活用できると思いました。
実際に動いているページ紹介
WebページURL:
http://termnix-it.tplinkdns.com
- 公開環境:自宅サーバ(Ubuntu)で常時稼働中
- 公開ポート:HTTP(80番)にてアクセス可能
- セキュリティ:UFW にて制限あり、HTTPSは後日対応予定
- メンテナンス予定:不定期(開発中のため、稼働が一時的に止まることがあります)
使用した技術スタック
要素 | 詳細 |
---|---|
OS | Ubuntu系Linux |
Webサーバ | Flask (localhost:5000) |
プロキシ | Nginx (ポート80/443) |
Firewall | UFW(80番ポートのみ許可) |
ルーター | TP-Link Archer AX23(ポート転送使用) |
構成図
外部(スマホ/PC)から HTTPリクエストをルーター経由で転送し、NginxがFlaskアプリに渡す構成です。現在はHTTP(ポート80)のみ開放しており、HTTPSは後日対応予定です。
今後の記事予定(リンクは随時追加)
- 第2回 【Flask編】Pythonで簡単Webアプリ構築
- 第3回 【Nginx編】Flaskアプリを外部公開する方法
- 第4回 【Firewall/ポート設定編】安全に公開するための基本設定
まとめ
構築系の記事は一度に書こうとすると情報量が多くなるため、完成形を見せた上で分割解説する形式を取ります。
次回は【Flask編】として、ローカルで簡単なWebアプリを立ち上げるところから始めていきます!
追記(執筆者メモ)
作業環境:Ubuntu Server / VSCode Remote / ローカル開発→本番反映の2段構成
使用エディタ:Cursor(VSCodeベースのAI対応エディタ)
最終更新:2025年6月18日