Nginx Gunicorn Flask 应用程序正在返回我网站的随机(缓存)版本

Nginx Gunicorn Flask 应用程序正在返回我网站的随机(缓存)版本

我希望这是一个提问的好地方,因为软件有好几层,无法判断哪一层是问题。

我的 browserync 代理正在返回我网站的一些缓存版本,这是我的工作流程:

在 Windows 10 之上,我运行 Fedora 25 的 VMWare 实例,从现在开始,这是我的“基础”操作系统。

作为第二个 VMWare 实例,我运行 Ubuntu 16.04.2 Server,该服务器在我的 Fedora Linux 中使用 SSHFS 进行安装。我使用具有 root 权限的用户(但不是 root 本身)通过 SSH 连接到它。

我在 /var/www 内的 virtualenv 内运行 Flask 应用程序,我为此文件夹执行了 chown user:www-data -R 。

我的 Nginx 在 ubuntu 服务器上的端口 80 上为该应用程序提供服务,并通过主机名 (website.com) 解析它,因此在我的 Fedora 工作站上,我有主机“192.168.xx.xx website.com”,这意味着我可以访问我的当我输入 website.com 时应用程序,从现在开始一切都很好。

当我放入 gulp 和 browsersync-gulp 插件时,问题就开始了。

我使用以下设置代理我的应用程序:

proxy: {
    target: 'http://127.0.0.1',
    proxyReq: [
        function(proxyReq) {
            proxyReq.setHeader('Host', 'website.com')
        }
    ]
}

这工作正常,它在 192.168.xx.xx 下打开另一台服务器,并在我提交文件中的一些更改时自行刷新(因为我指定了监视任务以在任何更改下重新加载 browsersync)。

我面临的问题是,每次我通过 browsersync 代理或 www.website.com 刷新网站时,我都会收到不同版本的网站(我可以看到我最近所做的一些过去的更改) - 看起来它在缓存中保留了我网站的 3 个不同版本,并且它完全随机地为我提供其中一个版本。

我猜可能是3个版本的数量反映了3个工人我已经在systemd中设置了gunicorn,它看起来像这样:

"ExecStart=/home/user/.local/bin/gunicorn --workers 3 --bind unix:website.com.sock -m 777 wsgi:app"

(我知道权限应该是007)

这就是我的 Nginx 站点配置的样子:

location / {
    include proxy_params;
    proxy_pass http://unix:/var/www/website.com/website.com.sock;
}

所以链看起来像这样:

Fedora 25 -> SSH -> Ubuntu 16.04.2 -> Gulp -> Gulp-browsersync -> Nginx -> VirtualEnv -> Gunicorn -> Flask 应用程序

类似的东西

太长了;由于某种原因,每次我刷新网站的随机版本时

请让我知道如何解决这个问题,对我的工作流程的任何其他提示也表示感谢,谢谢。

答案1

最后这不是真正的“缓存”问题。每次前端文件发生变化时,都应该重新启动 Gunicorn 实例。暂时关闭这个。

如果您使用 systemd 来为您的应用程序提供服务,则每次进行更改时都需要重新启动,否则我将提供旧版本的网站。

相关内容