Nginx 在一个域/端口对上为2台服务器提供服务
我有一些静态HTML/Javascript/CSS文件,我想在Nginx 在一个域/端口对上为2台服务器提供服务,nginx,webserver,flask,uwsgi,Nginx,Webserver,Flask,Uwsgi,我有一些静态HTML/Javascript/CSS文件,我想在/ 但我也有一个Web服务器,它使用Flask和uwsgi执行用Python编写的所有API调用。 我想做的是让我的所有静态内容都可以通过localhost访问,我的web API可以通过localhost/API访问。 这是我在已启用站点中的默认站点: server { listen 80; server_name localhost; root /var/www; location /api {
/
但我也有一个Web服务器,它使用Flask和uwsgi执行用Python编写的所有API调用。
我想做的是让我的所有静态内容都可以通过localhost访问,我的web API可以通过localhost/API访问。
这是我在已启用站点中的默认站点:
server {
listen 80;
server_name localhost;
root /var/www;
location /api {
location / {
try_files $uri @app;
}
location @app {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
}
}
}
如您所见,我正在为位于/var/www
的静态内容提供服务,并且我正在尝试向/api
发出所有请求,由uwsgi处理。目前,当我尝试此方法时,uwsgi给了我404,我认为这是因为uwsgi参数没有被传递。从我可以收集的文档()来看,您选择的方法仅在应用程序设置为URL根目录时有效。我从您的/api位置删除了try_文件,因为我认为不需要它,因为您没有从那里提供静态文件。您可能也不需要重写
server {
listen 80;
server_name localhost;
root /var/www;
location / {
try_files $uri $uri/ =404
}
location = /api { rewrite ^ /api/; }
location /api {
include uwsgi_params;
uwsgi_param SCRIPT_NAME /api;
uwsgi_modifier1 30;
uwsgi_pass 127.0.0.1:3031;
}