Gunicorn과 동일한 nginx 서버의 Django와 Flask

Gunicorn과 동일한 nginx 서버의 Django와 Flask

현재 mysite.com을 방문하면 기본 사이트에서 Djago 앱이 실행되고 있습니다. 그러나 mysite.com/flaskapp에서 별도의 Flask 애플리케이션을 실행하고 싶습니다. 두 개의 nginx 사이트 지원 구성 파일을 설정하고 각 앱을 다른 포트에서 실행할 수 있지만 여러 가지 이유로 가능한 경우 모두 동일한 포트에서 실행하고 싶습니다. 내 nginx 서버 파일에서 플라스크app/ 위치를 구성할 때 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_pass하면 fastcgi_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;
}



      

관련 정보