【问题标题】:Flask flashes appear on development server, but not with uWSGI/NginxFlask flashes 出现在开发服务器上,但不使用 uWSGI/Nginx
【发布时间】:2021-02-15 15:55:51
【问题描述】:

我一直在通过制作一个小网站并使用运行 python 的内置 Flask 服务器来学习 Flask。我有一个页面,您可以在其中按下一个按钮,它会使用烧瓶内的闪存系统闪烁一条消息。当我在我的 Windows 机器上使用内置的烧瓶服务器时,这些闪烁工作正常。但是,我已经使用通过 Nginx 的 uWSGI 将网站部署到 Linux 服务器。我的问题是,当我访问此服务器时,闪光灯不起作用。加载页面之类的大多数事情在两台服务器上都可以正常工作,但是闪烁被破坏了。我没有从 uWSGI 的日志中看到任何错误消息。

我用于flash的代码实现如下:

flash("Made new post.")
return redirect(url_for("posts"))

重定向将我带到正确的页面,如果我在重定向之前运行 print() 语句,显然会到达这些语句,flash 不会做任何事情。 我遇到的另一个主要问题是会话并尝试存储会话变量。当我尝试这样做时也没有任何反应。 (但它适用于我的个人机器)

任何想法为什么会这样,或者至少是从 uWSGI 获取错误消息的方法?

【问题讨论】:

    标签: python nginx flask uwsgi


    【解决方案1】:

    要正确设置 cookie(cookie 使消息闪烁工作),nginx 和 Flask 应用程序都需要就服务器名称达成一致。

    所以请确保您在 nginx.conf 中的 server_nameSERVER_NAME 匹配(或 SESSION_COOKIE_DOMAIN,如果设置)在你的烧瓶配置中。

    nginx 对 cookie 的大小也有限制,但只有当你闪现的消息非常大时才会出现问题。

    【讨论】:

    • 谢谢。我设置了 SERVER_NAME 属性,使其与我的 Nginx 配置匹配,但它仍然无法正常工作。我确实把这个测试网站放在了一个子域上,这可能是相关的。还值得注意的是,我没有配置 SSL。
    • 是的,server_name 对 URL 中的名称敏感并且应该匹配。这也匹配吗?
    • 是的。 server_name,Nginx中的名字,和我浏览器中的名字都是一样的。
    猜你喜欢
    • 1970-01-01
    • 2013-05-19
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多