我在图片目录/ images / upload上不断收到“目录禁止错误”。
通过在该目录上添加autoindex,我可以删除此错误。但我不希望别人看到该目录下的内容。
如何删除此错误?
Nginx配置
server
{
listen 80;
server_name www.no-dev.com;
index index.php index.html index.htm;
root /opt/www/no_web;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#location /images {
# autoindex on;
#}
location ~* \.(css|js)$ {
add_header Last-Modified: $date_gmt;
expires 1y;
access_log off;
}
location ~* \.(jpg|jpeg|gif|png|ico|bmp|swf)$ {
expires max;
access_log off;
}
access_log logs/no-dev.log main;
}
答案 0 :(得分:1)
您有以下设置:
index index.php index.html index.htm;
这意味着当autoindex关闭时,您的网络服务器将针对目录路径的每个请求:
所以如果你想避免403错误页面,你需要在该目录中设置index.php,index.html或index htm。
或者,您可以设置error_page 403 some_page.html;
以返回看起来不同的403结果。
答案 1 :(得分:1)
返回索引页面或403错误不是目录的唯一选择。例如,有时,404错误更合适。特别是当你想要隐藏文件夹时。
在这种情况下,有一种优雅的方式可以做任何你想做的事情:
# Create a fictive location which does what you want (404 here)
location /404/ {
internal;
return 404;
}
# Use this fictive location as a folder index. That's all.
index /404/;
目录索引请求将由(虚构)'/ 404 /'内部位置处理,并将导致404错误。请注意,它是内部位置。 客户端浏览器不会以任何方式重定向。它只是获得了404请求的返回代码。
这里,404错误只是一个例子。当您重定向到内部位置时,您可以执行任何操作。
因此,不是返回403错误代码,使用自动索引或尝试使用虚假页面隐藏您的问题,而是可以完全按照您的预期执行:)
答案 2 :(得分:0)
这将仅为http://example.com/返回403目录禁止,没有错误:
location = / {
return 403;
}
所以,在你的情况下:
location = /images/upload/ {
return 403;
}
这将仅为/ images / upload /目录返回403目录禁止,没有错误。