验证Nginx是否提供静态文件而不是Flask。

6
我有一个运行在gunicorn -w 1 -b 0.0.0.0:8000 flaskapp:app的Flask应用程序,并且使用以下nginx配置。但是我如何确定nginx是否真正提供静态文件呢?我试着将alias /home/pi/Public/flaskapp/static/;更改为.../static-testing/;,然后只放了一个占位符style.css,但页面似乎与之前一样加载。
server {
    listen 5000;
    server_name _;
    location / {
        proxy_pass http://127.0.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /static {
        alias  /home/pi/Public/flaskapp/static/;
    }
}

我有点不明白,Flask是否需要在路由中指定一些内容? 如果我漏了什么,请告诉我。

1
只需停止Flask,然后尝试加载静态文件。 - Alexey Ten
停止 Gunicorn 后 Flask 将不会加载任何内容。 - Draco Malfago
4个回答

3

所以我最终成功配置了nginx。我添加了根路径并删除了静态文件的硬路径,同时添加了日志文件,清楚地显示静态文件和CSS从nginx加载!我还将监听端口更改为80(惊喜)。

server {
    listen 80;

    server_name myapp.com;
    root /home/pi/Public/myapp;

    access_log /home/pi/Public/myapp/logs/nginx-access.log;
    error_log /home/pi/Public/myapp/logs/nginx-error.log;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /static/ { }

    location /uploads/ { }
}

你能加入缓存吗? - Beqa Bukhradze

1
你可以在 /static/ 路径中使用空路径进行测试。
server {
    listen 5000;
    server_name _;

    location /static/ {

    }

    location / {
        proxy_pass http://127.0.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

}

这将会产生404错误,因此您可以验证文件是否由Nginx提供。

仍在静态文件夹中加载文件。结论:我的设置没有正常工作? - Draco Malfago
1
你可以尝试将 /static 块放在 / 块之上,然后看看是否有效? - Vishvajit Pathak

1
我认为最简单的方法是将一些上游变量记录到访问日志中。

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables

你应该将此添加到nginx配置文件的http块中。
upstream backend {
  server 127.0.0.0.1:8000;
}

然后将proxy_pass更改为http://backend;

现在添加

log_format upstream '$upstream_bytes_received $upstream_response_time';
access_log /var/log/nginx-upstream upstream;

将以下内容添加到您的服务器块中,并重新启动nginx。 当nginx不请求上游时,您会看到“-”。
文档:http://nginx.org/en/docs/http/ngx_http_log_module.htmlhttp://nginx.org/en/docs/http/ngx_http_upstream_module.html

0
您可以在nginx位置块中添加自定义标头,并查看它是否设置在静态文件上。

1
我该怎么做?我是新手使用nginx。 - Draco Malfago

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接