网站首页 > 技术教程 正文
概述
今天主要分享怎么去用NGINX来提供静态内容服务,定义搜索路径以查找请求的文件的方法,以及如何设置索引文件。
在这个部分,主要涉及以下几个方面的内容:
- 根目录和索引文件
- 尝试几个选项
- 优化NGINX服务内容的速度
1. 根目录和索引文件
指令指定将用于搜索文件的根目录。 要获取请求文件的路径,NGINX将请求URI附加到root指令指定的路径。 该指令可以放置在http,server或location上下文中的任何级别上。 在下面的示例中,为虚拟服务器定义了root指令。 它适用于不包括root指令的所有location块以显式重新定义根:
server { root /www/data; location / { } location /images/ { } location ~ \.(mp3|mp4) { root /www/media; } }
这里,NGINX在文件系统的/www/data/images/目录中搜索以/images/开头的URI。 但是,如果URI以.mp3或.mp4扩展名结尾,则NGINX会在/www/media/目录中搜索.mp3或.mp4文件,因为它在匹配的location块中定义。
如果请求以斜杠结尾,则NGINX将其视为对目录的请求,并尝试在目录中找到索引文件。index指令定义索引文件的名称(默认值为index.html)。继续示例,如果请求URI为/images/some/path/,则NGINX会传递文件/www/data/images/some/path/index.html(如果存在)。 如果不存在文件,NGINX默认返回HTTP代码404(未找到)。 要配置NGINX以返回自动生成的目录列表,请将on参数添加到autoindex指令中:
location /images/ { autoindex on; }
可以在索引指令中列出多个文件名。 NGINX以指定的顺序搜索文件,并返回它找到的第一个文件。
location / { index index.$geo.html index.html index.html; }
这里使用的$geo变量是通过指令设置的自定义变量。 变量的值取决于客户端的IP地址。
2. 尝试几个选项
指令可用于检查指定的文件或目录是否存在并进行内部重定向,如果没有指定的文件或目录,则返回特定的状态代码。 例如,要检查与请求URI相对应的文件的存在,请使用try_files指令和$uri变量,如下所示:
server { root /www/data; location /images/ { try_files $uri /images/default.gif; } }
该文件以URI的形式指定,它使用在当前位置或虚拟服务器的上下文中设置的 root 或 alias 伪指令进行处理。 在这种情况下,如果与原始URI相对应的文件不存在,则NGINX将内部重定向到最后一个参数中指定的URI,也就是返回/www/data/images/default.gif。
最后一个参数也可以是一个状态代码(直接在前面的等号)或位置的名称。 在以下示例中,如果try_files指令的任何参数都不会解析为现有文件或目录,则会返回404错误。
location / { try_files $uri $uri/ $uri.html =404; }
在下一个示例中,如果原始URI和带有附加尾部斜线的URI都不能解析为现有文件或目录,则将请求重定向到将其传递给代理服务器的命名位置(location)。
location / { try_files $uri $uri/ @backend; } location @backend { proxy_pass http://backend.example.com; }
3. 优化NGINX服务内容的速度
加载速度是服务任何内容的关键因素。 对您的NGINX配置进行小幅优化可能会提高生产力并帮助实现最佳性能。
启用sendfile
默认情况下,NGINX会自动处理文件传输,并在发送文件之前将其复制到缓冲区中。 启用指令将消除将数据复制到缓冲区中的步骤,并允许将数据从一个文件描述符直接复制到另一个文件描述符。 或者,为了防止一个快速连接完全占用工作进程,您可以通过定义指令来限制在单个sendfile()调用中传输的数据量:
location /mp3 { sendfile on; sendfile_max_chunk 1m; ... }
启用tcp_nopush
将选项与sendfile一起使用。 该选项将使NGINX能够通过sendfile获取数据块之后,在一个数据包中发送HTTP响应头
location /mp3 { sendfile on; tcp_nopush on; ... }
启用tcp_nodelay
选项可以覆盖Nagle的算法,最初是为了解决慢网络中的小数据包问题而设计的。 该算法将大量小数据包整合到较大的数据包中,并以200 ms的延迟发送数据包。
如今,当服务大型静态文件时,无论数据包大小如何,都可以立即发送数据。 延迟也会影响在线应用程序(ssh,在线游戏,网上交易)。 默认情况下,tcp_nodelay指令设置为on,表示Nagle的算法被禁用。 该选项仅用于Keepalive连接:
location /mp3 { tcp_nodelay on; keepalive_timeout 65; ... }
上面就是关于Nginx配置静态内容服务器的一些参数介绍了,大家有兴趣的话可以自己在虚拟机搭建一下做个小测试,后期主要分享运维DBA和devops内容,感兴趣的朋友可以关注下!
猜你喜欢
- 2024-09-09 「Nginx」Web/代理服务器的瑞士军刀:重写与定位
- 2024-09-09 ingress-nginx常用注解指南(nginx详细讲解)
- 2024-09-09 Nginx反向代理常用配置(nginx反向代理设置)
- 2024-09-09 nginx+springboot使用https重定向的解决办法
- 2024-09-09 Nginx从0基础到进阶实战!运维工程师必看
- 2024-09-09 深度|掌握Nginx监控运维,这一篇足矣!
- 2024-09-09 详解nginx配置location总结及rewrite规则写法
- 2024-09-09 nginx 使用技巧配置(nginx 配置详解)
- 2024-09-09 nginx之Rewrite实战(nginx rewrite_by_lua)
- 2024-09-09 精品推荐!超简单Nginx开启SSL与重定向优化
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)