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

回答:


5

ngx_http_autoindex_moduleのドキュメントによると、自動インデックスされたページの列幅の設定は利用できません。この変更を行う唯一の方法は、ソースからのコンパイルです。

一つの選択肢は、(例えば、スクリプト言語を使用することができphprubyまたはpython)あなたのためのディレクトリ一覧を実行します。

利点は次のとおりです。

  • CSS、JavaScriptなどを介して完全にカスタマイズ可能
  • ファイルリストの細かい制御

警告:

  • 必要とCGIの例をphp-fpmpassenger
  • より多くの構成が必要

1
コンパイルはトリックをしました
エヴァクリスティン

-コンパイルするために変更しなければならないパラメータで答えがありserverfault.com/questions/310532/...を
Sysanin

5

ファイル名の長さを構成するために、fancyindex_name_lengthパラメーターを指定してfancyindexモジュールを試すことができます。


1
これは受け入れられる答えになるはずです。fancyindex_name_lengthnginxページには記載されていませんが、モジュールのgithubページにあることに注意してください。このモジュールはnginx-extrasパッケージに含まれていることに注意してください。
w00t 2018年

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 2017年

もちろんそうだ。ソースからnginxをコンパイルしたくない場合に使用できる回避策です
rubo77

申し訳ありません。初めて読んだとき、これがサーバーで実行するアプリオリなステップであることを理解できませんでした。もちろん、これはindex.htmlファイルでディレクトリ構造を散らかし、基礎となるファイルシステムが変更されるたびに再実行する必要がありますが、それでも正しいです。
pgoetz 2017年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.