ちょっと「ファイルブラウザ」モードを有効にするようにnginxを設定するにはどうすればよいですか?


82

以前にURLを入力したときにこれを見たhttp://test.com/test/ことがあれば、htmlページを表示する代わりに、指定された場所にあるすべてのファイルを参照するためのインターフェイスのような「ファイルブラウザ」が表示されます。

ロケーションコンテキストで有効にできるのはnginxモジュールかもしれないと思います。

nginx.confファイル:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  122.97.248.252;
                location /test {
                        root /home/yozloy/html/;
                        autoindex on;
                }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

を更新します error.log

2012/05/19 20:48:33 [エラー] 20357#0:* 72 open() "/ home / yozloy / html / test"が失敗しました(2:そのようなファイルまたはディレクトリはありません)、クライアント:125.43.236.33、サーバー:122.97.248.252、リクエスト: "GET / test HTTP / 1.1"、ホスト: "unicom2.markson.hk

場所の/test意味を誤解している必要があります。http://example.com/testと入力すると、ルート辞書にアクセスすることになると思いました。/home/yozloy/html/


テストディレクトリは存在しますか?
ドミトリチュバロフ2012年

@DmitriChubarovテストディレクトリが存在しません。/testはURL内のみを意味すると思ったので、ルートディレクトリに移動できます。テスト辞書を作成したくないので、誤解する必要がありますが、どうすれば作成できますか。そうですか?
mko 2012年

/ home / yozloy / html / testディレクトリを作成し、それをなんとかして入力して、自動インデックスが機能するかどうかを確認しますか?
ドミトリチュバロフ2012年

1
@DmitriChubarovは、テストフォルダーを作成するときに機能することを感謝します。
mko 2012年

回答:


115

HttpAutoindexModuleを試す必要があります。

自動インデックスオプションをに設定しますon。デフォルトではオフになっています。

設定例は問題ないはずです

location /{ 
   root /home/yozloy/html/; 
   index index.html; 
   autoindex on;
}

自動インデックスオプション/がないと、index.htmlファイルのないディレクトリで終わるリクエストに対してエラー403が発生するはずです。このオプションを使用すると、簡単なリストを取得する必要があります。

<html>
<head><title>Index of /</title></head>
<body bgcolor="white">
<h1>Index of /test/</h1><hr><pre><a href="../">../</a>
<a href="test.txt">test.txt</a>                 19-May-2012 10:43            0
</pre><hr></body>
</html>

編集:テストする参照を削除するようにリストを更新しました


それは有望なようです。しかし、私はそれを機能させることができません私はここに関連する指令を置きましたlocation /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko 2012年

nginxを再起動し、nginxが--without-http_autoindex_moduleでコンパイルされていないことを確認してください
Dmitri Chubarov 2012年

私が与えた唯一のフラグが--with-mp4_moduleであることを覚えていますが、これはhttp_autoindex_moduleがデフォルトでインストールされていることを意味しますか?または、インストールされていないかどうかを確認するコマンドがありますか
mko 2012年

nginx -V設定されたオプションのリストが表示されます。自動インデックスはデフォルトで有効になっていることに注意してください。したがって、-without-autoindexがない場合は、問題ありません。
ドミトリチュバロフ2012年

1
その後、エラーログを確認して、質問を更新してください。これは議論が長すぎます。チャットに移動します。
ドミトリチュバロフ2012年

14

1.すべてのディレクトリのコンテンツを一覧表示します

自動インデックスオプションをに設定しますon。デフォルトではオフになっています。

構成ファイル(vi /etc/nginx/sites-available/default)は次のようになります

location /{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

2.特定のディレクトリのみのコンテンツを一覧表示します

自動インデックスオプションをに設定しますon。デフォルトではオフになっています。

構成ファイル(vi /etc/nginx/sites-available/default
は次のようになります。ディレクトリパスに
変更path_of_your_directoryします

location /path_of_your_directory{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

それが役に立てば幸い..


2
これlocation /<something>は、共有したいファイル(たとえば/data)にアクセスするためのURLであり、nginxを介して共有したいディレクトリ(たとえば )ではありません~/videos/funny-cats/
トム

13

すべての回答には、回答の一部が含まれています。すべてを1つにまとめてみましょう。

新しくインストールしたnginxサーバーでのクイックセットアップ「ファイルブラウザ」モード:

  1. nginxのデフォルト設定を編集します:

    sudo vim /etc/nginx/sites-available/default
    
  2. 構成セクションに以下を追加します。

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. そこでフォルダとサンプルファイルを作成します。

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. nginxを再起動します

    sudo systemctl restart nginx
    
  5. チェック結果:http://<your-server-ip>/myfolder例:http//192.168.0.10/myfolder/

ここに画像の説明を入力してください


4

/home/yozloy/html/testフォルダを作成する必要があります。またはalias、以下のように使用できます。

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}

3

私は何度も試しました。

そしてついに私はちょうど入れautoindex on;ましたhttpが、外にありserver、それは大丈夫です。


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