Führen Sie mehrere Anwendungen in demselben virtuellen Host aus.
Wenn Sie auf http://example.com/app1/hello zugreifen, können Sie zu / hello der App springen, die auf uwsgi auf localhost ausgeführt wird.
Verstehen Sie drei wichtige Variablen (wahrscheinlich von CGI).
REQUEST_URI: /app/hello
SCRIPT_NAME: /app
PATH_INFO: /hello
REQUEST_URI ist der Pfad nach dem Hostnamen, auf den der Benutzer zugreift. In SCRIPT_NAME wird die App ausgeführt. CGI hat eine Erweiterung wie ".cgi" oder PHP hat eine Erweiterung wie ".php". PATH_INFO ist der Pfad nach SCRIPT_NAME. Der URL-Dispatcher der App sieht diese Variable.
Wenn diese drei Variablen nicht richtig eingestellt sind, funktionieren URL-Versand und -Umleitung nicht richtig.
nginx + uwsgi
Uwsgi_params, das standardmäßig bereitgestellt wird und nur durch Einschließen verwendet werden kann,
Der Text uwsgi_param REQUEST_URI $ request_uri
muss nicht geändert werden. PATH_INFO
ist auf $ document_uri
gesetzt, aber Sie müssen es entsprechend überschreiben.
Es gibt zwei Möglichkeiten, SCRIPT_NAME und PATH_INFO festzulegen: eine befindet sich auf der Nginx-Seite und die andere auf der Uwsgi-Seite.
Diese Methode wird empfohlen, da sie nicht nur auf uwsgi, sondern auch auf andere Reverse-Proxy-Methoden wie http und fastcgi angewendet werden kann.
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;
}
Wenn Sie das Anwendungspräfix mit uwsgis mount festgelegt haben, können Sie auch die Option "Verwaltungsskriptname" verwenden, um SCRIPT_NAME und PATH_INFO festzulegen.
Diese Methode ist praktisch, wenn Sie mount verwenden, z. B. um die App selbst und das wsgi-Skript separat für die Integritätsprüfung vorzubereiten.
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