Nginx:使用别名提供robots.txt

时间:2016-03-14 16:43:53

标签: nginx

我刚刚开始玩nginx + uwsgi,我试图弄清楚如何使用别名来提供robots.txt。以下是我目前无法正常工作的配置:

http {
    server {

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9090;
        }

        location /static {
            root /Users/dave/PycharmProjects/nginx_test/static;
        }

        location = /robots.txt {
            alias /Users/dave/PycharmProjects/nginx_test/static/robots.txt;
        }
    }
}

基本上,我的简单测试应用是一个Flask应用,应该使用Flask路由来针对/*提供请求,而nginx应该提供/static/*下的静态文件,但当然robots.txt应该是可访问的通过/robots.txt。 在/robots.txt按预期工作时,为什么我无法直接访问/static/robots.txt

1 个答案:

答案 0 :(得分:0)

robots.txt文件到底在哪里?如果它在/Users/dave/PycharmProjects/nginx_test/static/robots.txt中,那么您的root指令和alias指令都是错误的。

root开头的地点的正确/static/...指令是:

location /static {
    root /Users/dave/PycharmProjects/nginx_test;
}

将URI附加到文档根目录以生成完整路径名。

location = /robots.txt的情况下,不需要别名,只添加最后一个目录元素以形成正确的路径名:

location = /robots.txt {
    root /Users/dave/PycharmProjects/nginx_test/static;
}

有关详细信息,请参阅thisthis