nginx 提供静态内容服务

Web 服务器一项重要的任务是提供静态文件访问(例如:图像、静态HTML页面、CSS、JS等)。

下面将实现一个示例:根据客户端请求,从不同的本地目录提供文件:/data/www(可能包含 HTML 文件)和 /data/images(包含图像)。

这需要编辑 nginx.conf 配置文件并在 http 块内设置一个带有两个 locations 块的 server 块。

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

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

http {
    server {
    
    }
}

通常,配置文件可能包含多个 server 块,这些 server 块由它们侦听的端口和服务器名称来区分。一旦 nginx 决定哪个 server 处理请求,它就会根据 server 块中定义的 location 指令的参数测试请求标头中指定的 URI。

将以下 location 块添加到 server 块:

location / {
    root /data/www;
}

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

接下来,添加第二个 location 块:

location /images/ {
    root /data;
}

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

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

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

上面配置已经是一个 server 的工作配置,它侦听标准端口 80,并且可以在本地机器上访问 http://localhost/。为了响应以 /images/ 开头的 URI 的请求,服务器将从 /data/images 目录发送文件。例如,为了响应 http://localhost/images/example.png 请求,nginx 将发送 /data/images/example.png 文件。 如果这样的文件不存在,nginx 将发送一个响应,指示 404 错误。 URI 不以 /images/ 开头的请求将映射到 /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 文件中找出原因。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号