Nginx をリバースプロキシとして設定

Django × VPS デプロイ入門

日付:2025年2月19日

Django アプリを Gunicorn で動作させた後、Nginx をリバースプロキシとして設定し、セキュアで高速な本番環境を構築します。

目 次

1. なぜ Nginx を使うのか?

Gunicorn 単体ではリクエストを直接処理できますが、大量のトラフィックや SSL 対応などを考えると Nginx をリバースプロキシとして導入するのが一般的です。

リバースプロキシ(Reverse Proxy) とは、クライアント(ユーザーのブラウザなど)からのリクエストを受け取り、適切なバックエンドサーバー(例えば Gunicorn や Django アプリ)に転送し、そのレスポンスをクライアントに返す役割を持つサーバーのことです。

Nginx を導入するメリット

  • 静的ファイルの配信が可能(Django では runserver では処理しない)
  • ロードバランサとして機能(リクエストを Gunicorn に適切にルーティング)
  • SSL の設定が簡単(Let's Encrypt との統合も容易)

2. Nginx のインストール

VPS に Nginx をインストールします。

BASH
apt update && apt install -y nginx

インストール後、Nginx の動作確認。

BASH
systemctl status nginx

出力例

● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled) Active: active (running) since ...

3. Nginx の設定

Gunicorn の前段に Nginx をリバースプロキシとして設定します。

(1) Nginx の設定ファイルを作成

BASH
nano /etc/nginx/sites-available/myproject

以下の内容を記述。

NGINX
server { listen 80; server_name <your-domain-or-ip>; location / { proxy_pass http://unix:/home/myuser/django_project/gunicorn.sock; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /static/ { alias /home/myuser/django_project/static/; } location /media/ { alias /home/myuser/django_project/media/; } }

(2) 設定の有効化

BASH
ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/

設定が正しいかテスト。

BASH
nginx -t

成功例

nginx: configuration file /etc/nginx/nginx.conf test is successful

(3) Nginx を再起動

BASH
systemctl restart nginx

4. ファイアウォールの設定

Nginx の HTTP/HTTPS 通信を許可します。

BASH
ufw allow 'Nginx Full' ufw reload

5. 動作確認

ブラウザで http://<VPSのIP> にアクセスし、Django のページが表示されることを確認。

成功例:Nginx 経由で Django アプリが表示される。

6. まとめ

Nginx をリバースプロキシとして設定することで、Gunicorn と連携し、
セキュアでパフォーマンスの高い Django アプリの運用環境を構築できます。