nginx:目录列表中的长文件名


8

在OpenBSD 5.4、64位上使用nginx / 1.4.1:

在此处输入图片说明

使用目录列表时,如何设置nginx显示完整文件名(或至少显示文件名中的更多文件,然后显示默认文件)?

谷歌搜索只给了我这个:

http://forum.nginx.org/read.php?2,124400,167420#msg-167420
January 18, 2011 08:36PM
fagtron
I looked all over the net and wasn't able to find this answer anyway, so I looked into the nginx source files and it's very easy.

Simply modify the file located at [b]src/http/modules/ngx_http_autoindex_module.c[/b] and then compile.

Change these lines:

[b]#define NGX_HTTP_AUTOINDEX_PREALLOCATE 50

#define NGX_HTTP_AUTOINDEX_NAME_LEN 50[/b]

to whatever you want, such as:

[b]#define NGX_HTTP_AUTOINDEX_PREALLOCATE 100

#define NGX_HTTP_AUTOINDEX_NAME_LEN 100[/b]

And then compile and restart nginx. That's it !!!

问题:没有其他方法可以重新编译它了吗?


这是一本手册,介绍如何修改nginx源:tecklyfe.com/nginx-display-full-filename-directory-listing
rubo77 '19

Answers:


5

根据ngx_http_autoindex_module文档,自动索引页面的列宽配置不可用。从源代码进行编译将是进行此更改的唯一方法。

一种替代的方法是使用脚本语言(如phprubypython)执行为您列出的目录。

好处包括:

  • 通过CSS,JavaScript等完全可自定义
  • 精细控制文件列表

注意事项:

  • 需要CGI,例如php-fpmpassenger
  • 需要更多配置

1
编译成功了
evachristine

有一个与参数的答案,应该编译改变- serverfault.com/questions/310532/...
Sysanin

5

您可以尝试使用fancyindex模块及其fancyindex_name_length参数来配置文件名长度。


1
这应该是公认的答案。请注意,fancyindex_name_lengthnginx页面上未提及,但模块的github页面上有提及。请注意,此模块包含在nginx-extras包装中。
w00t

1

由于似乎没有办法比从源代码编译nginx来实现此目的,所以这是一种解决方法

您可以使用以下脚本在当前文件夹中自动创建一个index.html文件,其中包含整个路径:

#!/bin/bash
# scriptname: /usr/local/sbin/directory-long-index.sh
# 
# the directory_root without slash at the end:
WEB=/var/www/
#reacheable url from inside the server:
URL=http://localhost

P=$(pwd|sed "s|$WEB/||")
echo "download $URL/$P/ to index.html"
curl "$URL/$P/" -o index.html
sed -i 's|href="\(.*\)".*</a>|style="display:inline-block;min-width:500px" href="\1">\1</a>|' index.html

在文件夹内只需调用:

source /usr/local/sbin/directory-long-index.sh

来源:https : //gist.github.com/rubo77/c7a9434eb104c00bf8772b2278284360


另一个解决方法是使用以下命令从头创建一个简单的目录列表

for i in *; do echo '<a href="'$i'">'$i'</a><br>'>>index.html; done

这甚至与用户的问题无关。
pgoetz

是的。如果您不想从源代码编译
Nginx

对于那个很抱歉; 初读时,我未能意识到这是要在服务器上运行的先验步骤。当然,这将使您的目录结构充满index.html文件,并且只要基础文件系统发生更改,都需要重新运行它,但是您是正确的。
pgoetz

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.