【Nginx基础】静态资源服务相关配置

Nginx可以作为静态资源服务使用,下面列举静态资源服务的相关配置

1 常用配置

(1) sendfile

使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动高效传输文件的模式。sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据;如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket;开启这个参数后可以让数据不用经过用户buffer:
配置语法:sendfile on | off;
默认配置:sendfile off;
配置路径:http、server、location、if in location下


(2) tcp_nopush

改配置可以让数据包达到一定大小后才一次行发送,这样使得每次的请求的使用率达到最高。比如 我们有10个包裹需要快递,可以1个1个分10次来寄,这样需要10次,但是我们可以一次性将这10个快递寄出,这样只需要1次,节省了快递时填单和走路的时间,更高效,这个配置的前提是开启 sendfile:
配置语法:tcp_nopush on | off;
默认配置:tcp_nopush off;
配置路径:http、server、location


(3) tcp_nodelay

改配置和 tcp_nopush 是 “互斥”的,改配置表示立刻将缓冲区数据发出,常用于实时性较高的地方,一般用于keepalive长连接下,提高网络包的实时传输性:
配置语法:tcp_nodelay on | off;
默认配置:tcp_nodelay on;
配置路径:http、server、location


(4) 压缩

可以通过 gzip 配置来 配置文件压缩要求,开启压缩:
配置语法:gzip on | off;
默认配置:gzip off;
配置路径:http、server、location、if in location


设置压缩等级,等级越高,压缩度越高,对应的占用性能越高:
配置语法:gzip_comp_level level;
默认配置:gzip_comp_level 1;
配置路径:http、server、location


设置gzip http协议的版本,用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。
配置语法:gzip_http_version 1.0 | 1.1 ;
默认配置:gzip_http_version 1.1;
配置路径:http、server、location


设置gzip_types,设置需要压缩的MIME类型,如果不在设置类型范围内的请求不进行压缩
配置语法:gzip_types mime-type….;
写全就是:text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
默认配置:gzip_types text/html;
配置路径:http、server、location


2 配置实例

#开启
sendfile on;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location ~ ^/html {
alias /opt/app/static/PP_admin-template/;
index index.html index.htm;
#设置显示文件夹
autoindex on;
#设置访问网速带宽
set $limit_rate 1k;
}
#设置缓存
location ~ ^/static {
expires 24h;
root /opt/app/static/PP_admin-template;
}


相关推荐

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3

  • Thinkphp5.1路径常量

    1 配置文件位置根目录/config/template.php2 配置文件内容<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reser

  • Thinkphp5.0路径常量

    1 配置文件位置根目录/application/模块名/config.php2 配置文件内容<?php//配置文件return [ // 后台视图输出字符串内容替换 'view_replace_str' => [ '__PUBLIC__' => '/', '__STATIC__' => '/static', '__CONSOLE__' => '/static/console', '__CONSOLE_CSS__' => '/static/console/css', '__CONSOLE_IMAGES__' => '/static/console/ima

  • wp站点防止别人进行DDOS攻击

    1 简介wp站点防止别人进行DDOS攻击。2 配置位置位置:根目录/wp-config.php3 配置内容在【根目录/wp-config.php】文件的开头添加如下代码:if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){ $protocol = $_SERVER['SERVER_PROTOCOL'] ?? ''; if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){ $protocol = 'HTTP/1.0'; } hea

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this->x = $x; $this->y = $y; }}$point = new Point(3.5, 2.8);echo $point->x; // 输出: 3.5echo $point->y; // 输出: 2.8// 下面的尝