我有一个网站,我认为是一个简单的设置.在我的主要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;
}
字符串
1条答案
按热度按时间mbjcgjjk1#
由于你从后端(
proxy_pass http://something/;
)获取所有内容,你必须在robots.txt
位置重复它。如果没有它,NGINX将尝试在文件系统上找到它,当然,返回404。应该是:
字符串