Exécutez plusieurs applications dans le même hôte virtuel.
Si vous accédez à http://example.com/app1/hello, vous pouvez accéder à / hello de l'application exécutée sur uwsgi sur localhost.
Comprenez trois variables importantes (probablement de CGI).
REQUEST_URI: /app/hello
SCRIPT_NAME: /app
PATH_INFO: /hello
REQUEST_URI est le chemin après le nom d'hôte auquel l'utilisateur accède. SCRIPT_NAME est l'endroit où l'application est exécutée. CGI a une extension telle que «.cgi» ou php a une extension telle que «.php». PATH_INFO est le chemin après SCRIPT_NAME. Le répartiteur d'URL de l'application verra cette variable.
Si ces trois variables ne sont pas définies correctement, l'envoi et la redirection d'URL ne fonctionneront pas correctement.
nginx + uwsgi
Uwsgi_params, qui est fourni par défaut et peut être utilisé simplement en incluant,
ʻUwsgi_param REQUEST_URI $ request_urin'a pas besoin d'être changé tel quel.
PATH_INFO est défini sur
$ document_uri`, mais vous devez l'écraser de manière appropriée.
Il y a deux façons de définir SCRIPT_NAME et PATH_INFO, l'une est du côté nginx et l'autre du côté uwsgi.
Cette méthode est recommandée car elle peut être appliquée non seulement à uwsgi mais aussi à d'autres méthodes de proxy inverse telles que http et fastcgi.
nginx.conf
location ~ ^/app/(.*)$ {
uwsgi_pass unix:/var/run/uwsgi/app.sock;
include /usr/local/nginx/conf/uwsgi_params;
uwsgi_param SCRIPT_NAME /app;
uwsgi_param PATH_INFO /$1;
}
Si vous avez utilisé le montage d'uwsgi pour définir le préfixe de l'application, vous pouvez également utiliser l'option manage-script-name
pour définir SCRIPT_NAME et PATH_INFO.
Cette méthode est pratique si vous utilisez mount car l'application elle-même et le script wsgi pour la vérification de l'état sont préparés séparément.
nginx.conf
location ~ ^/app/(.*)$ {
uwsgi_pass unix:/var/run/uwsgi/app.sock;
include /usr/local/nginx/conf/uwsgi_params;
}
uwsgi.ini
[uwsgi]
master = true
lazy-apps = true
socket = /var/run/uwsgi/app.sock
workers = 4
mount = /app=wsgi.py
manage-script-name = true
Recommended Posts