使用nginx从给定目录的子目录提供静态文件
我在我的服务器上有几组静态.html
文件,我想用nginx直接提供服务。 例如,nginx应该提供以下模式的URI:
www.mysite.com/public/doc/foo/bar.html
与位于/home/www-data/mysite/public/doc/foo/bar.html
的.html
文件相关/home/www-data/mysite/public/doc/foo/bar.html
。 您可以将foo
视为设置名称,并将其作为文件名称。
我不知道是否接下来的nginxconfiguration会做这个工作:
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说:;
当位置匹配指令值的最后部分时:最好使用root指令:
这将产生:
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; } }