【问题标题】:Serving 2 servers on one domain/port pair在一个域/端口对上为 2 个服务器提供服务
【发布时间】:2013-08-19 18:54:05
【问题描述】:

我有一些静态 HTML/Javascript/CSS 文件,我想在 / 提供这些文件。
但我也有一个网络服务器,它使用 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 参数。

【问题讨论】:

    标签: nginx webserver flask uwsgi


    【解决方案1】:

    根据我收集到的文档 (http://flask.pocoo.org/docs/deploying/uwsgi/),您选择的方法仅在应用程序设置为 URL 根目录时才有效。我从您的 /api 位置删除了 try_files,因为我认为不需要它,因为您没有从那里提供静态文件。你可能也不需要重写。

    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;
        }
    

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 2016-04-11
      • 2021-04-23
      • 2011-11-11
      • 2020-05-30
      • 2018-03-20
      • 2015-07-31
      • 1970-01-01
      • 2014-03-23
      相关资源
      最近更新 更多