明天,来小试牛刀 - 应用 Nginx 搭建动态资源 Web 服务器,给大家分享一下全过程。
至于什么是 Nginx?Nginx 装置、配置,这样就不再过多的赘述了,废话不多说,直奔主题。
后期筹备
筹备一个 web 动态资源 (我用的是之前学习的 webgl 的例子),先来看看怎么配置 nginx:
首先配置 listen 指令,监听 8000 端口。接着配置一个 location 指令块,/ 示意所有申请,而后配置 / 后的路由与申请目录下的门路要统一,这时有两种应用办法,alias 是其中一种。
listen:申请进入 nginx 前,首先须要监听端口使得 nginx 与客户端建设一个 tcp 链接。listen 指令就是用来监听端口的,处于 server 指令块内的。通过监听的端口与地址就能判断应用哪些 server 去解决申请。
listen 指令值次要分为三种类型:
- address[:port]- 监听一个地址或者加相应的端口。比方 listen 127.0.0.1:8000
- port- 监听一个端口。比方 listen 8000
- unix:path- 监听一个 unix socket 地址,只用于本机通信。比方 unix:/var/run/nginx.sock
而后应用命令重载 nginxnginx -s reload,这时拜访 localhost:8000 就能看到成果了 root 与 alias:这两个指令次要性能都是将 url 映射为文件门路,以返回动态文件内容。次要的差异在于:
root 有一个默认值 html,能够呈现在 http、server 和 location 指令块内,并且会将残缺的 url 映射进文件门路中 alias 没有默认值,只能呈现在 location 指令块中,并且只会将 location 后的 url 映射到文件门路 举例说明:
location /root {root html}
location /alias {alias html}
当拜访 localhost/root/ 时,依据配置的指令值,会在 html 后加上 /root 再去拜访 index.html。所以理论拜访的路由地址为 localhost/html/root/index.html。这是因为 root 会将残缺的 url 映射进文件门路中。
而拜访 localhost/alias/ 时,拜访的路由地址为 localhost/html/index.html。
应用 gzip 压缩来缩小网络传输
当拜访的资源很大时,往往会耗费大量的宽带,也减少加载工夫。nginx 能够设置动态资源的压缩性能。
gzip on
#示意关上 gzip 性能开关
gzip_min_length 1
#示意 gzip 最小压缩字节大小,如果一个文件很小,在一个 tcp 报文就能发送进去,这时再进行压缩成果不太,却又耗费 cpu。(我这是为了演示才设置为 1)gzip_comp_level 2
#示意压缩级别
gzip_types
#示意只对列出来的类型进行压缩
压缩后只有 830kb,而且在响应头中也能看出应用了 gzip 压缩
应用 autoindex
应用 autoindex 能够将一个目录信息分享给用户,用户依据本人需要关上对应目录。
在文档中介绍到,当拜访 / 结尾的 url 时,会对应到这个目录并展现这个目录的构造。应用办法就是把 autoindex 置为 on 拜访 css/ 这个文件夹时:
这里须要提出一点的是,会有一些状况:开启了 autoindex 后,还是不会返回目录构造。可能是因为配置 index 指令,index 指令优先级会大于 autoindex 指令。具体如下:
index:当拜访 / 时会返回 index 指令的文件内容。index file,默认值是 index.html,能够呈现在 http、server 和 location 指令块中。autoindex:当 url 以 / 结尾时,尝试以 html/xml/json 等格局返回 root/alias 中指向目录的目录构造
限度访问速度
因为公网带宽是无限的,当有许多用户同时拜访时,他们是一个加强关系。这时可能须要用户拜访一些大文件时限度访问速度,以确保能有足够的带宽使得其余用户可能拜访一些例如 css,js 等根底文件。这时能够设置 set 的命令配合一些内置变量来实现这一个性能。比如说
set $limit_rate 1k;
限度服务器向浏览器发送响应的速度。$limit_rate 这个变量能够在官网的 ngx_http_core_module 模块中的 Embedded Variables 中
用法就是变量前面加上一个以空间为单位的数字,示意每秒传输多少字节。加上限度之后,会发现访问速度有变动。
记录 access 日志
日志要显示什么内容,就要看要设置什么样的格局。应用 log_format 指令定义日志的格局。
log\_format 格局容许设置一个名字,这就能够对不同用处时记录不同格局的日志文件。如图所示,设置为名为 main 的日志格局。这个格局应用了很多内置变量:
$remote_addr: 示意远端的 ip 地址,也就是浏览器的 ip 地址
$remote_user:示意用户名提供根本身份验证
$time_local:示意拜访工夫
$request:残缺的原始申请行
$status:示意响应状态
$body_bytes_sent:发送给客户端的 body 字节数
$http_referer:示意从哪跳转过来
$http_user_agent:用户浏览器的类别,版本以及操作系统的一些信息
$http_x_forwarded_for:客户端申请头中的 "X-Forwarded-For"
设置完 log_format 之后,就要去设置日志记录的中央。应用 access_log 指令。
access_log 所在哪个 server 块中,就示意这类申请的日志都记录在 access_log 设置的中央;
server {
...
access_log logs/access.log main;
}
示意将这个 server 的申请记录在 logs 的 access.log 文件中,采纳 main 的记录格局
以上就是通应用 Nginx 来搭建一个动态 WEB 资源服务器的全过程,非常简单,然而,十分实用。
内容摘自:https://blog.csdn.net/hugo233…