Nginx作为静态文件HTTP服务器
- 在本地系统中创建/data/www目录,存放html文件(包括index.html)
- 创建/data/images目录,存放imags图片
- 在主配置文件中添加http指令
http {
server {
listen 80;
server_name localhost;
}
}
说明:在 http指令中可以定义多个server指令,通过监听端口号以及server name进行来区分每个server。当Nginx通过判断请求Header中url(服务器名字、端口号以及URI)以及 Server指令下定义的location指令来决定使用哪个服务器(以及匹配Server指令下的哪个location指令)来处理请求
4. 在server指令中添加location指令
location / {
root /data/www;
}
说明:在 server指令中,可以添加多个location指令以匹配不同的请求,不同的请求到不同的系统路径下获取资源。在上面的location指令 中,location之后的“/”称为前缀。location指 令指定了"/"前缀与请求的URI进行比较(从左向由,匹配成功也就意味着RequestURI.startWith(前缀))。对于匹配上的请 求,RequestURI将添加到由root指令指定的path之后,因为这里的前缀是“/”,所以最后得到请求对应到文件系统上路径是/data /www/RequestURI。如果有多个location匹配成功,则匹配前缀最长的那个。这个例子中,"/"是最短的后缀,因此只有当前server指令下所有其它的location定义的后缀匹配失败,才会匹配成功"/"
5. 在Server中添加如下的配置片段
location /images/ {
root /data;
}
说明:这段配置将匹配请求为以/images/开头的请求。以/images/开头的请求在4中定义的/也会匹配,但是它的长度没有/images/长,所以,对于/images/开头的请求,这个配置将被选中,并且对应到文件系统的路径是/data/RequestURI
- 对于请求
http://localhost/,只有4中的location符合,那么nginx将返回/data/www/index.html
- 对于请求
http://localhost/images/example.png,那么5中定义的location符合,那么nginx将返回/data/images/example.png
- 对于请求
http://localhost/some/example.html,由于
5中定义的location不符合,只有4中定义的符合,那么/data/www/some/example.html文件将被返回
- 对于上面的请求,如果Nginx从文件系统找不到指定的文件,Nginx将返回404错误
6. 完成如上配置后,运行nginx -s reload重新加载配置文件,可以测试上面的规则是否正确