0

我通过不同的端口在同一台机器上运行 django 和 flask 应用程序:

Django 在服务器上运行:8088 Flask 在服务器上运行:666

在 NGINX.conf 我有以下代码:

 location / {
            proxy_pass          http://127.0.0.1:8088;

        }

 location ^/server2 {
            proxy_pass http://127.0.0.1:666;
        }

Django 已经在这个设置下成功运行了一年多,而烧瓶是一个新添加的。每当我尝试访问其中一个 Flask url 时,我都会收到“此服务器上不存在此 url”错误,或者有时会出现 500 错误(当我一直在摆弄时)。

如果我为特定的烧瓶 url 编写位置信息,如下所示:

location /server2/splash {
                proxy_pass http://127.0.0.1:666/splash;
            }

它有效,但我显然不想为烧瓶应用程序中的每个 URL 编写单独的位置信息。

我已经浏览了 stackoverflow 上的许多现有 Nginx 位置帖子,但我无法让它工作。有任何想法吗?

谢谢!

编辑

这是我想要实现的一个示例,但不是每个 URL 的单独映射,我想要一个涵盖所有 URL 的映射:

        location /server2{
            proxy_pass http://127.0.0.1:666/splash;
        }

        location /server2/split {
            proxy_pass http://127.0.0.1:666/split;
        }

        location /server2/export {
            proxy_pass http://127.0.0.1:666/export;
        }

        location /server2/import {
            proxy_pass http://127.0.0.1:666/import;
        }
4

2 回答 2

0

请注意,当您使用时location /server2server2仍然会传递给您的烧瓶应用程序。

在这种情况下,Nginx 正在执行以下操作:

server.com/server2 => http://127.0.0.1:666/server2
server.com/server2/splash => http://127.0.0.1:666/server2/splash

在这种情况下location不做重写。始终检查/var/log/nginx(或您的日志所在的任何位置)以检查浏览器完成的请求以及 Nginx 在处理您的站点规则后查找的内容。

您可能想要的是设置一个upstream指令:

upstream flask_server {
    server 127.0.0.1:666;
}

server {
    ...

    location /server2 {
        proxy_pass http://flask_server;
    }
}
于 2013-04-11T07:20:27.600 回答
0

你为什么使用这个^标志?只需将其删除,我认为它会起作用:

location /server2 {
        proxy_pass http://127.0.0.1:666;
    }
于 2012-12-13T03:58:11.953 回答