nginx: 디렉터리 목록의 긴 파일 이름

nginx: 디렉터리 목록의 긴 파일 이름

OpenBSD 5.4, 64비트에서 nginx/1.4.1 사용:

여기에 이미지 설명을 입력하세요.

디렉토리 목록을 사용할 때 전체 파일 이름을 표시하도록(또는 최소한 파일 이름에 기본 파일 이름을 표시하도록) nginx를 어떻게 설정할 수 있습니까?

Google 검색에서는 다음과 같은 정보만 제공했습니다.

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 !!!

질문: 그럼 재컴파일하는 다른 방법은 없나요?

답변1

fancyindex 모듈과 fancyindex_name_length 매개변수를 사용하여 파일 이름 길이를 구성할 수 있습니다.

답변2

~에 따르면ngx_http_autoindex_module문서에서는 자동 인덱스 페이지의 열 너비 구성을 사용할 수 없습니다. 소스에서 컴파일하는 것이 이러한 변경을 수행하는 유일한 방법입니다.

대안은 스크립팅 언어(예: php, ruby또는 python)를 사용하여 디렉토리 목록을 수행하는 것입니다.

이점은 다음과 같습니다.

  • CSS, JavaScript 등을 통해 완전히 사용자 정의 가능
  • 파일 목록을 세밀하게 제어

지침:

답변3

소스에서 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

답변4

링크의 href에 전체 이름이 있습니다. 반환된 이름 대신 일부 자바스크립트를 사용하여 해당 이름을 사용할 수 있습니다.

관련 정보