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 등을 통해 완전히 사용자 정의 가능
- 파일 목록을 세밀하게 제어
지침:
- 하나 필요해컴퓨터 그래픽 이미지 처리예를 들어
php-fpm
또는passenger
- 추가 구성 필요
답변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에 전체 이름이 있습니다. 반환된 이름 대신 일부 자바스크립트를 사용하여 해당 이름을 사용할 수 있습니다.