【问题标题】:how to use Nginx proxy_pass to a Flask APP如何使用 Nginx proxy_pass 到 Flask APP
【发布时间】:2019-08-14 04:32:46
【问题描述】:

我一个网站,即。例子.com。它的 nginx 配置文件是这样的,

server{
   ... 
   location /foo{
       proxy_pass http://ip_address/;
       proxy_set_header Host ip_address;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }   
   ...
}  

对于上面的 ip_address,我有以下烧瓶应用程序的 nginx 配置文件,

server {
listen 80;
server_name ip_address; 

location = / {
    include uwsgi_params;
    uwsgi_pass unix:/pathtomysocket/x.sock;
} 
location / {
    include uwsgi_params;
    uwsgi_pass unix:/pathtomysocket/x.sock;
}
}

我想在这里实现的是,当客户端访问 example.com/foo 时,它应该从烧瓶应用程序响应,但是,有一个问题,从烧瓶应用程序生成的 url 没有 foo作为前缀,因此当单击 /abc 等其他链接时,它将重定向到 example.com/abc 而不是 example.com/foo/abc。我怎样才能达到这个结果?我搜索了很多但没有运气,我想这可能与服务器名称等有关。请帮忙。谢谢!

【问题讨论】:

    标签: nginx flask uwsgi proxypass


    【解决方案1】:

    也许您需要查看 FlaskApp 中的路由配置。

    查看Blueprints

    这是another example 用于路由前缀的蓝图

    【讨论】:

    • 也许我解释得不好,因为我不是英语母语者。你可能认为有两台服务器,一台主机 example.com。另一个是我的烧瓶应用程序。当访问者请求 example.com/foo 时,我想从我的烧瓶应用程序(路线'/')中显示索引页面,它工作正常。但是点击这个页面的其他链接时,由于url是从url_for生成的,所以链接就像/abc/123没有域名,所以会访问之前404的服务器,因为url应该是example.com/foo/abc /123 而不是 example.com/abc/123。如果我手动添加 foo,它可以按预期呈现正确的页面
    • 只要您的后端生成带有链接的 html/json,大多数情况下它基于您应用程序内定义的路由,并将其用作事实来源。您可以定义一个 ENV 变量或您的应用程序配置变量,它们可以用作前缀。如果您运行应用程序的多个副本并且需要为每个应用程序添加不同的前缀(或者可能不需要为某些应用程序添加前缀),您只需将适当的值放入该变量中
    猜你喜欢
    • 2023-03-12
    • 2016-12-22
    • 2019-01-22
    • 2011-08-10
    • 2015-01-04
    • 1970-01-01
    • 2012-10-02
    • 2015-03-16
    • 2011-08-15
    相关资源
    最近更新 更多