サーバーに複数の静的.html
ファイルセットがあり、nginxを使用してそれらを直接提供したいと思います。たとえば、nginxは次のパターンのURIを提供する必要があります。
www.mysite.com/public/doc/foo/bar.html
.html
にある/home/www-data/mysite/public/doc/foo/bar.html
ファイルを使用します。ここでは、foo
をセット名、bar
をファイル名と考えることができます。
次のnginx configの部分が仕事をするのだろうか?
server {
listen 8080;
server_name www.mysite.com mysite.com;
error_log /home/www-data/logs/nginx_www.error.log;
error_page 404 /404.html;
location /public/doc/ {
autoindex on;
alias /home/www-data/mysite/public/doc/;
}
location = /404.html {
alias /home/www-data/mysite/static/html/404.html;
}
}
つまり、パターン/public/doc/.../....html
のすべてのリクエストはnginxによって処理され、特定のURIが見つからない場合は、デフォルトのwww.mysite.com/404.html
が返されます。
ただし、動作するはずです http://nginx.org/en/docs/http/ngx_http_core_module.html#alias 言います:
場所がディレクティブの値の最後の部分と一致する場合:代わりにルートディレクティブを使用することをお勧めします。
次のようになります:
server {
listen 8080;
server_name www.mysite.com mysite.com;
error_log /home/www-data/logs/nginx_www.error.log;
error_page 404 /404.html;
location /public/doc/ {
autoindex on;
root /home/www-data/mysite;
}
location = /404.html {
root /home/www-data/mysite/static/html;
}
}