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

时间:2017-03-07 19:12:36

标签: python nginx flask gunicorn

我有一个使用以下nginx配置运行gunicorn -w 1 -b 0.0.0.0:8000 flaskapp:app的烧瓶应用。但是,如何判断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/;
    }
}

我错过了一些明显的东西吗?是否必须在烧瓶路线中指明一些内容?

4 个答案:

答案 0 :(得分:2)

所以我最终正确配置了nginx。我添加了root并删除了静态的硬路径,还添加了日志文件,清楚地显示静态和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/ { }
}

答案 1 :(得分:1)

您可以使用/ static / location中提到的空路径来测试它。

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提供。

答案 2 :(得分:0)

您可以将自定义标题添加到您的nginx位置块,看看它是否已在您的静态文件中设置。

答案 3 :(得分:0)

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

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

你应该将它添加到http块中的nginx conf

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没有请求上游时,你会看到' - '。

Doc:http://nginx.org/en/docs/http/ngx_http_log_module.html& http://nginx.org/en/docs/http/ngx_http_upstream_module.html