
Wenn ich mysite.com besuche, läuft derzeit auf meiner Hauptseite eine Djago-App. Allerdings möchte ich, dass auf mysite.com/flaskapp eine separate Flask-Anwendung läuft. Ich kann zwei nginx-Site-fähige Konfigurationsdateien einrichten und jede App auf einem anderen Port ausführen, aber aus verschiedenen Gründen möchte ich sie alle auf demselben Port ausführen (wenn möglich). Wenn ich meinen flaskapp/-Standort in meiner Nginx-Serverdatei konfiguriere, erhalte ich einen 404-Fehler.
Hier ist meine Supervisor-Konfigurationsdatei:
[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
Und meine Site-fähige Nginx-Datei:
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;
}
}
Irgendwelche Ideen? Danke!
Antwort1
Es liegt ein Tippfehler im Proxy-Pfad vor. Sie haben proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
, aber es sollte geben fastcgi_pass unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
. Entfernen Sie http://
, ändern Sie proxy_pass
in fastcgi_pass
und alles sollte funktionieren.
Antwort2
Ich habe es herausgefunden. Ich habe die URL umgeschrieben, um das Unterverzeichnis zu entfernen, und jetzt funktioniert alles.
Vor:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
}
nach:
location /FLASKAPP/ {
include proxy_params;
proxy_pass http://unix:/var/www/html/MYSITE/public_html/FLASKAPP/api/FLASKAPP.sock;
rewrite ^/FLASKAPP(.*)$ $1 break;
}