Django と Flask を gunicorn と同じ nginx サーバーで実行する

Django と Flask を gunicorn と同じ nginx サーバーで実行する

現在、mysite.com にアクセスすると、メイン サイトで Djago アプリが稼働しています。ただし、mysite.com/flaskapp で別の Flask アプリケーションを実行したいと考えています。2 つの nginx サイト対応構成ファイルをセットアップして、各アプリを異なるポートで実行することはできますが、さまざまな理由から、すべてを同じポートで実行したいと考えています (可能な場合)。nginx サーバー ファイルで flaskapp/ の場所を構成すると、404 エラーが発生します。

これが私のスーパーバイザー設定ファイルです:

[program:MYSITE]
command=/var/www/html/MYSITE/prodenv/bin/gunicorn --workers 3 --bind unix:/var/www/html/MYSITE/public_html/MYSITE.sock MYSITE.wsgi
directory=/var/www/html/MYSITE/public_html
autostart=true
autorestart=true
stderr_logfile=/var/log/MYSITE.err.log
stdout_logfile=/var/log/MYSITE.out.log


[program:FLASKAPP]
directory=/var/www/html/MYSITE/public_html/FLASKAPP/api
command=/var/www/html/MYSITE/public_html/FLASKAPP/venv/bin/gunicorn --workers 3 --bind unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock FLASKAPP:app
autostart=true
autorestart=true
stderr_logfile=/var/log/FLASKAPP.err.log
stdout_logfile=/var/log/FLASKAPP.out.log

そして、私の nginx サイト対応ファイル:

server {
    listen 80;
    listen [::]:80;

    server_name MYSITE;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
            root /var/www/html/MYSITE/public_html;
        expires 30d;
        }

    location / {
            include proxy_params;
            proxy_pass http://unix:/var/www/html/MYSITE/public_html/MYSITE.sock;
        }

    location /FLASKAPP/ {
        include proxy_params;
        proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock; 
        }


}

何かアイデアはありますか? ありがとうございます!

答え1

proxy_path にタイプミスがあります。 がありますproxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;が、 である必要がありますfastcgi_pass unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;。 を削除してにhttp://変更すると、すべてが機能するはずです。proxy_passfastcgi_pass

答え2

解決しました。サブディレクトリを削除するように URL を書き直したら、すべて動作するようになりました。

前に:

    location /FLASKAPP/ {
        include proxy_params;
        proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock; 
    }

後:

location /FLASKAPP/ {
    include proxy_params;
    proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock; 
    rewrite ^/FLASKAPP(.*)$ $1 break;
}



      

関連情報