nginx: Nama file panjang dalam daftar direktori

8

Menggunakan nginx / 1.4.1 dengan OpenBSD 5.4, 64bit:

masukkan deskripsi gambar di sini

Bagaimana kita bisa mengatur nginx untuk menampilkan nama file lengkap (atau setidaknya menunjukkan lebih banyak dari nama file kemudian default) ketika menggunakan daftar direktori?

Googling hanya memberi saya ini:

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

Pertanyaan : apakah tidak ada cara lain untuk mengkompilasinya?

evachristine
sumber
di sini adalah manual, bagaimana memodifikasi sumber nginx: tecklyfe.com/nginx-display-full-filename-directory-listing
rubo77

Jawaban:

5

Menurut dokumentasi ngx_http_autoindex_module , konfigurasi lebar kolom untuk halaman yang diindeks otomatis tidak tersedia. Kompilasi dari sumber akan menjadi satu-satunya cara untuk melakukan perubahan ini.

Salah satu alternatif bisa menggunakan bahasa scripting (misalnya php, rubyatau python) untuk melakukan daftar direktori untuk Anda.

Manfaat meliputi:

  • sepenuhnya dapat dikustomisasi melalui CSS, JavaScript, dll
  • kontrol baik atas daftar file

Peringatan:

  • membutuhkan CGI misalnya php-fpmataupassenger
  • memerlukan lebih banyak konfigurasi
ssh2ksh
sumber
1
kompilasi melakukan trik
evachristine
ada jawaban dengan parameter yang harus diubah untuk kompilasi - serverfault.com/questions/310532/…
Sysanin
5

Anda dapat mencoba modul fancyindex dengan parameter fancyindex_name_length untuk mengonfigurasi panjang nama file.

Jack Rowe
sumber
1
ini harus menjadi jawaban yang diterima. perhatikan bahwa fancyindex_name_lengthtidak disebutkan pada halaman nginx tetapi pada halaman github modul. perhatikan bahwa modul ini termasuk dalam nginx-extraspaket.
w00t
1

Karena tampaknya tidak ada cara untuk mencapai ini selain dengan mengkompilasi nginx dari sumbernya, ini akan menjadi solusi :

Anda dapat secara otomatis membuat file index.html di folder saat ini, yang berisi seluruh path, dengan skrip ini:

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

di dalam folder panggil saja:

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

sumber: https://gist.github.com/rubo77/c7a9434eb104c00bf8772b2278284360


Solusi lain adalah dengan membuat daftar direktori sederhana dari awal

for i in *; do echo '<a href="'$i'">'$i'</a><br>'>>index.html; done
rubo77
sumber
Ini bahkan tidak terkait dengan pertanyaan pengguna.
pgoetz
Tentu saja. Ini adalah solusi yang dapat Anda gunakan jika Anda tidak ingin mengkompilasi nginx dari sumber
rubo77
Maaf tentang itu; pada bacaan pertama saya gagal menyadari bahwa ini dimaksudkan sebagai langkah apriori untuk dijalankan di server. Tentu saja ini akan mengotori struktur direktori Anda dengan file index.html dan perlu dijalankan kembali kapan saja perubahan sistem file yang mendasarinya, tetapi Anda tetap benar.
pgoetz
0

Coba ini,

autoindex on;
autoindex_format json; # <- configure like this, your will get full name, FORMAT IN JSON

Dokumen dari Modul ngx_http_autoindex_module

selalu
sumber