用Nginx搭建一个可用的静态资源服务器
目标:用Nginx在服务器端搭建Mysq8参考手册界面(环境CentOS8 )
- 将其拷贝到nginx安装目录下的mysql_man
- vim conf/nginx.conf 配置nginx
- 首先配置使用哪个端口,这里设置8080
- 配置location
- location后面"/",表示所有的请求,然后需要指定url它的后缀要与我的文件目录后面的后缀一一对应,有两种用法,一种叫root,一种叫alias
- root相对来说有一个问题,它会把url中的一些路径带到我们的文件目录中来,所以我们通常使用alias
- 启动nginx (sbin目录下)
./nginx
- 如果启动过了(sbin目录下)
./nginx -s reload
备注:
- 如果启动后,通过客户端无法访问服务器,则进行如下尝试
netstat -ntlp
- 查看8080-端口是否被分配给了Nginx,执行结果如下
- 对8080端口进行防火墙配置:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 重启防火墙服务:
systemctl restart firewalld.service
- 然后通过客户端进行访问,结果如下
GZIP功能
- 针对上诉配置好的服务器,存在一个问题,我们先在火狐浏览器打开抓包,查看效果,注意传输数值
- 因为所有的文本文件是可以做gzib压缩的,做完压缩,传输的字节数会大幅度减少,通常我们是会打开gzib的。
- 现在我们打开gzib查看效果,
- 各参数含义:
- gzip_min_length 小于多少字节 就不再压缩了,因为有一些特别小的文件内容,我们在一个tcp报文中就发出去了,这时候再压缩去消耗CPU资源意义就不大了
- gzip_comp_level 压缩级别
- gzip_types 针对某些文件进行gzip压缩
- 可参考:Nginx Gzip模块启用和配置指令详解
- 配置完后,重启nginx
[root@localhost conf]# ../sbin/nginx -s reload
- 接着再次访问并抓包,注意传输变化
- 从响应头中也可以看到gzip
- 使用gizp,静态资源传输服务效率会提升很多
目录结构功能
- 如果需要将文件,文件夹及其目录结构信息分享给用户,由用户决定来使用哪些文件。Nginx提供了autoindex模块。
- 参考文档: nginx.org/en/docs/
- 这个
ngx_http_autoindex_module
模块处理以斜杠字符结尾的url时,对应到一个目录中,显示这个目录的结构
- reload之后,访问查看效果。这是一种共享静态资源的非常好的方式
传输限制功能
- 因为公网带宽是非常有限的,,当有许多用户并发使用带宽时,形成竞争关系,我们可能在某些用户使用大文件时限制他的速度,希望分离出足够的带宽给用户访问必要的小文件,如css,jss等文件,这时我们可以使用set命令,配合使用我们的一些内置的变量,实现这样的功能。
- 比如加上 set $limit_rate 1k;
- 它就在限制Nginx向客户浏览器发送响应的速度
- limit_rate,在ngx_http_core_module中提供了Embedded Variables,其中有一个内置变量
$limit_rate
- setting this variable enables response rate limiting; see limit_rate
- set $limit_rate 1k;设置之后访问速度变慢
记录acess日志
- acess日志格式
- 指令 log_format
- remote_addr,远端的浏览器ip地址
- time_local,表示当时时间
- status表示返回的是200,301重定向,403拒绝访问等状态。
- 这样的日志格式需要进行命名,比如命名成main。因为我们可能对不同的域名下做不同格式的日志记录,或者对URL或者一些大文件或者做一些反向代理,不同用途时做不同日志格式
- 配置好log_format后,就需要设定日志记录在哪里
- 可以用access_log指令所在的位置(哪个指令块)决定了它所属的一类请求,会记录日志到指定路径,通过指定格式
- ngx_http_core_module中提供的内置变量都可以通过日志记录下来,还有很多第三方模块,提供了变量都可以记录下来