用Nginx搭建一个可用的静态资源服务器

用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模块。

  • 这个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中提供的内置变量都可以通过日志记录下来,还有很多第三方模块,提供了变量都可以记录下来

猜你喜欢

转载自blog.csdn.net/baidu_41388533/article/details/106826243