gunicornとNginxを使用してDjangoとFlaskのアプリケーションを同時に公開するための設定ファイル(Nginxの設定ファイル)
| 登録日 | :2024/02/10 06:50 |
|---|---|
| カテゴリ | :Linux |
Nginxの設定ファイル(通常はnginx.confまたは/etc/nginx/sites-available/default)にリバースプロキシの設定を追加します。次のような設定を追加することで、NginxはGunicornにリクエストを転送します:
Nginxの設定ファイルを作成します
- /etc/nginx/sites-available/flask_and_django_app
server {
listen 80;
server_name your_domain.com;
location /django/ {
include proxy_params;
proxy_pass http://unix:/run/gunicorn_django.sock;
}
location /flask/ {
include proxy_params;
proxy_pass http://unix:/run/gunicorn_flask.sock;
}
}
ただし、Let's Encrypt(cerbot)を使っってHTTPS化しておけば、自動的にHTTPSに対応した記述となる(はず)
sudo apt update
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
以下、HTTPSに対応した設定ファイル例
server {
listen 80;
server_name example.com;
location /django/ {
proxy_pass http://unix:/run/gunicorn_django.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;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /flask/ {
proxy_pass http://unix:/run/gunicorn_flask.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;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
alias /path/to/static/files/; # DjangoやFlaskの静的ファイルのパスを指定
}
location /media/ {
alias /path/to/media/files/; # DjangoやFlaskのメディアファイルのパスを指定
}
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location /django/ {
proxy_pass http://unix:/run/gunicorn_django.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;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /flask/ {
proxy_pass http://unix:/run/gunicorn_flask.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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Nginxの設定ファイル
- nginx.conf
nginx.conf ファイルの場所は、一般的に以下の場所にあります。
Linux: /etc/nginx/nginx.conf
macOS: /usr/local/etc/nginx/nginx.conf
- /etc/nginx/sites-available と /etc/nginx/sites-enabled
Nginxの仮想ホスト(サーバーブロック)の設定ファイルを管理するためのディレクトリです。
sites-available: ここには、使用可能なすべての仮想ホストの設定ファイルが配置されます。サイトを有効にするには、このディレクトリ内の設定ファイルを /etc/nginx/sites-enabled にシンボリックリンクとして追加します。
sites-enabled: 有効な仮想ホストの設定ファイルがここに配置されます。実際にNginxが読み込む設定ファイルはここにあるシンボリックリンクです。このディレクトリ内のファイルが変更されると、Nginxを再起動する必要があります。
これにより、Nginxは sites-available の設定ファイルを参照して、どの仮想ホストを有効にするかを決定します。このアプローチにより、サイトの追加や変更を簡単に管理できます。
Nginxのシンボリックリンクを作成し、設定を有効化:
sudo ln -s /etc/nginx/sites-available/flask_and_app /etc/nginx/sites-enabled/flask_app
sudo systemctl restart nginx
これで、FlaskアプリがGunicornとNginxを介して公開されます。Nginxはポート80でリクエストを受け取り、それをGunicornがリッスンするポート(8000など)に転送します。