nginx: Tên tệp dài trong danh sách thư mục


8

Sử dụng nginx / 1.4.1 với OpenBSD 5.4, 64 bit:

nhập mô tả hình ảnh ở đây

Làm thế nào chúng ta có thể đặt nginx để hiển thị tên tệp đầy đủ (hoặc ít nhất hiển thị nhiều hơn từ tên tệp sau đó mặc định) khi sử dụng danh sách thư mục?

Googling xung quanh chỉ cho tôi điều này:

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

Câu hỏi : không có cách nào khác sau đó để biên dịch lại nó?


Câu trả lời:


5

Theo tài liệu ngx_http_autoindex_module , cấu hình độ rộng cột cho các trang tự động không có sẵn. Biên dịch từ nguồn sẽ là cách duy nhất để thực hiện thay đổi này.

Một thay thế có thể sử dụng một ngôn ngữ kịch bản (ví dụ php, rubyhoặc python) để thực hiện các mục liệt kê cho bạn.

Lợi ích bao gồm:

  • hoàn toàn tùy biến thông qua CSS, JavaScript, v.v.
  • kiểm soát tốt danh sách tập tin

Hãy cẩn thận:

  • yêu cầu CGI, ví dụ php-fpmhoặcpassenger
  • yêu cầu cấu hình nhiều hơn

1
biên dịch đã thực hiện mánh khóe
evachristine

có một câu trả lời với các tham số nên được thay đổi để biên dịch - serverfault.com/questions/310532/
mẹo

5

Bạn có thể thử mô-đun Fancyindex với tham số Fancyindex_name_length để định cấu hình độ dài tên tệp.


1
đây sẽ là câu trả lời được chấp nhận lưu ý rằng fancyindex_name_lengthkhông được đề cập trên trang nginx nhưng trên trang github của mô-đun. lưu ý rằng mô-đun này được bao gồm trong nginx-extrasgói.
w00t

1

Vì dường như không có cách nào để đạt được điều này ngoài việc biên dịch nginx từ nguồn, đây sẽ là một cách giải quyết :

Bạn có thể tự động tạo tệp index.html trong thư mục hiện tại, chứa toàn bộ đường dẫn, với tập lệnh này:

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

Trong thư mục chỉ cần gọi:

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

nguồn: https://gist.github.com/rubo77/c7a9434eb104c00bf8772b2278284360


Một cách giải quyết khác là tạo một danh sách thư mục đơn giản từ đầu với

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

Điều này thậm chí không liên quan từ xa đến câu hỏi của người dùng.
pgoetz

Chắc chắn đó là. Đó là một cách giải quyết bạn có thể sử dụng nếu bạn không muốn biên dịch nginx từ nguồn
rubo77

Xin lỗi vì điều đó; trong lần đọc đầu tiên, tôi đã không nhận ra rằng đây là một bước ưu tiên được chạy trên máy chủ. Tất nhiên, điều này sẽ xả cấu trúc thư mục của bạn với các tệp index.html và cần được chạy lại bất cứ khi nào hệ thống tệp cơ bản thay đổi, nhưng bạn vẫn đúng.
pgoetz

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.