特定の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を検索したくないので、ダウンロードのディレクトリインデックスが欲しいだけです。このように機能させるには、何を変更する必要がありますか?
Nginxが親ディレクトリツリー内のすべてのディレクトリに対してexecute権限を持っているかどうかを確認します。あなたの場合、Nginxは/
、/home
、/home/myfiles
、/home/myfiles/Downloads
の実行権限を持っている必要があります。そうでない場合、Nginxはこれらのディレクトリにchdirできません。
これを確認する簡単な方法は、namei -l /home/myfiles/Downloads
を実行することです。
この場合、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 を参照してください。
こんにちは私も自動インデックスエラーがあります。 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
nginxドキュメント によると:
「ngx_http_index_moduleがインデックスファイルを見つけられなかった場合にのみ、リクエストはngx_http_autoindex_moduleに到達します。」
場所にindex
が定義されていない場合、デフォルトで次の値になります:index index.html
。
/home/myfiles/Downloads/files/
からindex.htmlを削除すると、ディレクトリリストにファイルが表示されます。