web-dev-qa-db-ja.com

Nginx:特定のディレクトリから静的ファイルを提供-1レベルが深すぎる

私はnginx設定にかなり慣れています。私はかなり基本的な問題でいくつかの問題を抱えています。/docでいくつかの静的ファイル(index.html、いくつかの画像など)をホストしたいと思います。ファイルは、/ sites/mysite/proj/doc /というディレクトリにあります。

問題は、以下のnginx設定で、nginxが「/ sites/mysite/proj/doc/doc」というディレクトリを検索しようとすることです。おそらく、ルートを/ sites/mysite/proj /に設定することでこれを修正できるかもしれませんが、proj /ディレクトリー内の他の(非静的)アセットを潜在的に公開したくありません。そして、さまざまな理由から、doc /ディレクトリを実際の場所から実際に移動することはできません。

この状況を解決するために書き換えルールを使用する方法はあると思いますが、私はすべての部分を実際に理解しているわけではないため、ルールの定式化が困難です。

rewrite ^/doc/(.*)$ /$1 permanent;

/ sites/mysite/htdocs/static /ディレクトリからファイルをホスティングする実際の例も含めました。

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", Host: "myhost.com"

この静的コンテンツを提供する方法について誰かが何かアイデアを持っていますか?

13
Joe J

次のようにエイリアスを使用できます。

location /doc {
    alias   /sites/mysite/proj/doc/;
}

http://wiki.nginx.org/HttpCoreModule#alias

20