我在 Gentoo Linux 上运行的 nginx 1.4.0 服务器出现了问题。我创建了一个文件夹,并使用 fancyindex on; 参数,当我打开页面时,连接似乎永远不会结束。浏览器显示页面仍在加载,Linux 上的 curl localhost 显示 fancyindex 返回除页脚之外的所有内容。大约 1 分钟后收到页脚,然后连接结束。我的文件夹 /var/www/public/ 是指向 /home/me/public_html 的符号链接。
这是我的 nginx.conf:
user nginx nginx;
worker_processes 1;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 128M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
ignore_invalid_headers on;
fancyindex_exact_size off;
index index.php index.html;
server
{
listen 80;
server_name mywebsite.com
root /var/www;
location /
{
allow x.x.x.x;
deny all;
}
location /public
{
allow all;
fancyindex on;
}
location ~ \.php$
{
fastcgi_pass unix:/var/run/php-fpm-www.sock;
include fastcgi.conf;
}
include security.conf;
}
}
这是我的 security.conf:
location ~ /\.ht
{
deny all;
}
日志清晰,nginx进程不阻塞(没有使用100%的cpu)ulimit -n返回1024
连接如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><style type="text/css">body,html {background:#fff;font-family:"Bitstream Vera Sans","Lucida Grande","Lucida Sans Unicode",Lucidux,Verdana,Lucida,sans-serif;}tr.e {background:#f4f4f4;}th,td {padding:0.1em 0.5em;}th {text-align:left;font-weight:bold;background:#eee;border-bottom:1px solid #aaa;}#list {border:1px solid #aaa;width:100%;}a {color:#a33;}a:hover {color:#e33;}</style>
<title>Index of /public/</title>
</head><body><h1>Index of /public/</h1>
<table id="list" cellpadding="0.1em" cellspacing="0">
<colgroup><col width="55%"/><col width="20%"/><col width="25%"/></colgroup>
<thead><tr><th>File Name</th><th>File Size</th><th>Date</th></tr></thead>
<tbody><tr class="o"><td><a href="../">Parent directory/</a></td><td>-</td><td>-</td></tr><tr class="e"><td><a href="Foltest.zip">Foltest.zip</a></td><td> 844M</td><td>13-May-2013 14:06</td></tr>
SOME TIME HERE
</tbody></table></body></html>
答案1
打开ngx_http_fancyindex_module.c
文件并找到以下行:
r->headers_out.status = NGX_OK;
用。。。来代替:
r->headers_out.status = NGX_HTTP_OK;
编译 Nginx。
这就是你所需要的一切。
答案2
fancyindex 有一个页脚指令,但默认值为“无”,因此它甚至不应该处理该指令。为确保不会处理,请尝试在 fancyindex_exact_size 选项下方添加此指令:
fancyindex_footer ""