web-dev-qa-db-ja.com

nginx自動インデックスに関する問題

特定のURLがサーバー上の特定のディレクトリのディレクトリインデックスを生成するように、nginxを設定しようとしています。現在、これは私のdefault.confがどのように見えるかです。

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /files/ {
        root        /home/myfiles/Downloads;
        autoindex   on;
    }

しかし、mysite.com/files /またはmysite.com/filesにアクセスしようとすると、403 Forbiddenエラーが発生します。

私が見たエラーログを調べる

2012/01/08 16:23:18 [error] 17619#0: *1 "/home/myfiles/Downloads/files/index.html" is forbidden (13: Permission denied), client: some.ip.addr.ess, server: _, request: "GET /files/ HTTP/1.1",

Files/index.htmlを検索したくないので、ダウンロードのディレクトリインデックスが欲しいだけです。このように機能させるには、何を変更する必要がありますか?

3
Varun Madiath

Nginxが親ディレクトリツリー内のすべてのディレクトリに対してexecute権限を持っているかどうかを確認します。あなたの場合、Nginxは//home/home/myfiles/home/myfiles/Downloadsの実行権限を持っている必要があります。そうでない場合、Nginxはこれらのディレクトリにchdirできません。

これを確認する簡単な方法は、namei -l /home/myfiles/Downloadsを実行することです。

5
Ellimist

この場合、aliasの代わりにrootディレクティブを使用する必要があります。

rootを使用する場合、mysite.com/files/へのリクエストはローカルディレクトリ/home/myfiles/Downloads/files/でインデックスファイルを探し、見つからない場合は自動的にディレクトリリストを生成します(指定したautoindexオプション)。指定したルートディレクトリにnginxがどのように追加されるか/files/に注意してください。

あなたの場合、/files/をダウンロードディレクトリの同義語にしたいので、ロケーションブロックでalias /home/myfiles/Downloads/を使用する必要があります。次に、mysite.com/files/へのリクエストはすべてディレクトリ/home/myfiles/Downloads/に変換されます(たとえば、mysite.com/files/bigfile.gz/home/myfiles/Downloads/bigfile.gzになります)。エイリアスの末尾の/が必要であることに注意してください。

エイリアスの詳細については、ドキュメント http://wiki.nginx.org/HttpCoreModule#alias を参照してください。

8
Damien

こんにちは私も自動インデックスエラーがあります。 BTW: nginxをインストールしてサードパーティのリポジトリを使用します。

まず、自動インデックスを確認するだけです

/opt/tengine/sbin/nginx -V 2>&1 | grep auto

[root@sec002 tengine]# /opt/tengine/sbin/nginx -V 2>&1 | grep auto
            ngx_http_autoindex_module (static)

私のサーバー構成

server {
    listen 8082;
    server_name sec002.xxx.com;
    root /tmp;
    autoindex on;
    location / {
        root /tmp/php/;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }
}

私はブラウザsec002.xxx.com:8082、以下のエラー:

2016/01/07 16:09:26 [error] 4205#0: *1 "/tmp/php/index.html" is not found (2: No such file or directory), client: 192.168.2.13, server: sec002.xxx.com, request: "GET / HTTP/1.1", Host: "sec002.xxx.com:8082"

実行権限nginxユーザーが正しいことを確認します

最後に、私はあきらめて、デフォルトでtarパッケージによってnginxを再構築します。次にworked

1
user322818

nginxドキュメント によると:
「ngx_http_index_moduleがインデックスファイルを見つけられなかった場合にのみ、リクエストはngx_http_autoindex_moduleに到達します。」

場所にindexが定義されていない場合、デフォルトで次の値になります:index index.html

/home/myfiles/Downloads/files/からindex.htmlを削除すると、ディレクトリリストにファイルが表示されます。

0