Nginx提供静态内容

来自泡泡学习笔记
跳到导航 跳到搜索

一个重要web服务器任务是提供文件(如图像或静态HTML页面)。您将实现一个示例,根据请求,将从不同的本地目录提供文件:/data/www(可能包含HTML文件)和/data/images(包含图像)。这将需要编辑配置文件并在http块内设置一个带有两个location块的server块。


首先,创建/data/www目录,在其中放入一个带有任何文本内容的index.html文件,并创建/data/images目录,在其中放置一些图像。


接下来,打开配置文件。默认配置文件已经包括了几个server块的示例,大部分被注释掉了。现在注释掉所有这些块,并开始一个新的server块:

http {
    server {
    }
}

通常,配置文件可能包括几个通过它们侦听的端口和服务器名称区分的server块。一旦nginx决定哪个服务器处理请求,它就会测试请求头中指定的URI与在server块内定义的位置指令的参数。


将以下位置块添加到server块:

location / {
    root /data/www;
}

这个位置块指定了与请求中的URI相比较的“/”前缀。对于匹配的请求,URI将添加到root指令中指定的路径,即/data/www,以形成本地文件系统上请求文件的路径。如果有多个匹配的位置块,nginx会选择前缀最长的那个。上述位置块提供了长度为一的前缀,因此只有在所有其他位置块都无法提供匹配时,才会使用此块。


接下来,添加第二个位置块:

location /images/ {
    root /data;
}

它将匹配以/images/开头的请求(位置/也匹配此类请求,但前缀较短)。


结果得到的server块配置应该如下所示:

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

这已经是在标准端口80上侦听并在本地计算机上的http://localhost/可访问的服务器的工作配置。对于以/images/开头的URI的请求,服务器将从/data/images目录发送文件。例如,对于http://localhost/images/example.png请求,nginx将发送/data/images/example.png文件。如果这样的文件不存在,nginx将发送指示404错误的响应。不以/images/开头的URI的请求将映射到/data/www目录。例如,对于http://localhost/some/example.html请求,nginx将发送/data/www/some/example.html文件。


要应用新的配置,请启动nginx(如果尚未启动),或者通过执行以下命令向nginx的主进程发送重新加载信号:

nginx -s reload


如果某些内容不符合预期,您可以尝试在/usr/local/nginx/logs或/var/log/nginx目录中的access.log和error.log文件中找出原因。