在nginx中允许所有对robots.txt的访问?

vfhzx4xs  于 12个月前  发布在  Nginx
关注(0)|答案(1)|浏览(181)

我有一个网站,我认为是一个简单的设置.在我的主要location / {...}块,我有一堆的deny指令的特定IP地址,似乎是恶意的某种方式.我想添加一个块,允许任何人都可以达到我的robots.txt文件(即,即使是那些被deny指令阻止的人),但我不能让它工作。
我尝试在与主location / {}块相同的级别添加块location = /robots.txt { allow all; },但是当我重新启动nginx时,* 没有人 * 可以访问robots.txt;每个人都得到404,这似乎很奇怪-如果我搞砸了,我认为人们会拒绝访问,而不是声明文件不存在。
做这件事的正确方法是什么?
编辑:显示大部分代码似乎毫无意义,因为它感觉明显无关紧要,但要点是:

location / {
    deny 1.2.3.4;
    deny 5.6.7.8;
    # etc.
    proxy_pass http://something/;
    # other proxy stuff here
}

location /static {
    alias /path/to/static/files;
}

# If this is here, going to http://example.com/robots.txt returns 404 for everyone
# If it's commented out, everyone can see it
# (except for 1.2.3.4 and 5.6.7.8, in the deny directive above:
# they get a 403. I want them to be able to see it.)
location = /robots.txt {
    allow all;
}

字符串

mbjcgjjk

mbjcgjjk1#

由于你从后端(proxy_pass http://something/;)获取所有内容,你必须在robots.txt位置重复它。如果没有它,NGINX将尝试在文件系统上找到它,当然,返回404。
应该是:

location = /robots.txt {
    allow all;
    proxy_pass http://something/;
}

字符串

相关问题