确认应用程序是否使用nginx来提供静态文件

时间:2015-05-28 11:12:03

标签: python nginx flask webserver gunicorn

我正在使用此tutorial - part 1,但我不知道如何测试该应用是否与nginx服务静态文件一起运行。

我的代码完全相同。

/etc/nginx/sites-available/flask_project

server {
    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /static {
        alias  /home/www/flask_project/static/;
    }
}

然后:

gunicorn app:app -b localhost:8000

所有路线都运转良好。但是,如果我http://localhost:8000/static,我会看到

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

显然我应该从静态文件夹中看到<h1>Test!</h1>的页面。

我做错了什么?

基本上我想知道如何配置nginx来提供静态文件然后确认。

-app.py
-static
   -index.html

2 个答案:

答案 0 :(得分:2)

首先,端口8000的请求完全绕过nginx,所以这里没什么奇怪的。你应该去localhost没有端口号。

其次,您必须将此配置符号链接到/etc/nginx/sites-enabled并重新加载nginx。

第三,你的静态位置是错误的。您有location没有尾随斜杠,alias有一个斜杠。它们应始终同时带有或不带斜线。在这种情况下,拥有root指令会更好。

server {
    root /home/www/flask_project;
    index index.html;

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

    location /static/ {
        # empty. Will serve static files from ROOT/static.
    }
}

答案 1 :(得分:-1)

您应该直接提出请求http://localhost:8000/static/index.html然后您会看到回复。

但是如果你想在默认情况下看index.html,你应该有类似于conf的内容:

location /static {
    alias  /home/www/flask_project/static/;
    try_files $uri $uri/index.html index.html;
}