Flask & uwsgi 不渲染静态文件夹中的文件

Flask & uwsgi not rendering files from static folder

我正在关注 this tutorial,一切顺利,但应用程序未呈现静态文件夹中的文件(css、图像、脚本等)。

我已授予该文件夹 (sudo chmod a+rwx static) 和子文件夹的所有权限,但仍然无法呈现。

我使用的代码是以前使用几乎相同配置的代码(Ubuntu 18.04 当天回来)

app = Flask(__name__,static_url_path='',static_folder="static")

还有我的 nginx 配置文件:

 location / {
    include uwsgi_params;
    uwsgi_pass unix:/home/sydney/ecocathlon/ecocathlon.sock;
}
 location /static {
     root /home/sydney/ecocathlon/static;
 }

关于我如何允许程序访问该文件夹,您有什么想法吗?

提前致谢,

悉尼

如果您可以使用 wsgi 提供文件,请检查 whitenoise

如果需要,以后迁移到 CDN 也很简单。

使用alias代替root

location /static {
     alias /home/sydney/ecocathlon/static;
}

基于 .

此外,我会将 static_url_path 排除在您的应用程序定义之外,并且 static_folder 因为您只是将其设置为默认值:

app = Flask(__name__)

static_url_path 控制应用程序如何生成静态文件的 URL,因此您可以通过将其设置为空字符串来强制它生成类似 /something.js 而不是 /static/something.js 的链接.

通过使用

static_url_path=''

而不是默认值

static_url_path=None

您是在告诉 Flask 静态资源将位于 / 而不是 /static。这将混淆使用

的尝试
location /static {

因为没有/staticurl路径。但如果你尝试过

location / {

请求永远不会到达您应用的主页。

删除 static_url_path=''(并保留 location /static)或为解析为您希望 nginx 直接服务器上的文件的每个路由指定单独的位置。