静态资源部署

概述

1、客户端通过浏览器发送一个 HTTP 请求,获取所需要内容后,并把内容回显展示在页面

2、请求内容的类型

(1)静态资源:在服务器端真实存在,并且能直接展示的文件,如:html 页面、css 文件、js 文件、图片、视频等资源

(2)动态资源:在服务器端真实存在,但获取需要经过一定的业务逻辑处理,根据不同的条件,在页面展示不同部分的内容,如:报表数据展示、根据当前登录用户展示相关具体数据等资源 

 

虚拟主机、域名解析

1、HTTP 协议(高级协议)在 TCP/IP 协议(基础协议)之上

2、虚拟主机

(1)一台服务器只能对应一个站点,通过虚拟主机技术,可以虚拟化成多个站点,同时对外提供服务

(2)一台主机,同一 IP,不同域名

3、应用

(1)多用户二级域名

(2)短网址

(3)HTTPDNS

 

server 块

1、一个 server 代表一个虚拟主机

2、一个 Nginx 配置多个 server,即同时运行多个主机

3、主机之间互不干扰,拥有独立站点、根目录

4、通过 listen(监听)不同端口区分主机

 

配置指令

1、listen

(1)配置监听端口

(2)语法

listen address[:port] [default_server]……;
listen port [default_server]……;

(3)默认值

listen *:80 | *:8000;

(4)位置:server

(5)default_server:标识符,将此虚拟主机设置成默认主机

(6)默认主机:如果没有匹配到对应 address:port,则会默认执行 default_server

(7)如果不指定 default_server,默认使用第一个 server

2、server_name

(1)设置虚拟主机服务名称(域名 / 主机名)

(2)语法

server_name name1 name2……;

(3)默认值

server_name "";

(4)位置:server

(5)允许配置多个域名,指向同一主机

3、server_name 匹配

(1)精确匹配

(2)通配符匹配:支持通配符 *,但通配符不能出现在域名的中间,只能出现在首段或尾段

(3)正则表达式匹配:使用 ~ 作为正则表达式字符串的开始标记

正则表达式 说明
^ 匹配搜索字符串开始位置
$ 匹配搜索字符串结束位置
. 匹配除换行符 \n 之外的任何单个字符
\ 转义字符,将下一个字符标记为特殊字符
[xyz] 字符集,与任意一个指定字符匹配
[a-z] 字符范围,匹配指定范围内的任何字符
\w 与以下任意字符匹配 A-Z a-z 0-9 _,等价于 [A-Za-z0-9_]
\d 数字字符匹配,等价于 [0-9]
{n} 正好匹配 n 次
{n,} 至少匹配 n 次
{n,m} 匹配至少 n 次,至多 m 次
* 零次或多次,等价于 {0,}
+ 一次或多次,等价于 {1,}
? 零次或一次,等价于 {0,1}

(4)匹配顺序(从上至下):完全匹配 -> 通配符在前 -> 通配符在后 -> 正则表达式匹配

(5)都不匹配:listen 的 default_server -> listen 的第一个 server 块

4、location

(1)设置请求的 URI,即匹配 server_name + location

(2)语法

location [ |=|~|~*|^~|@] uri{……}

(3)位置:server、location

(4)URI 变量:待匹配的请求字符串

(5)不带符号:要求必须以指定模式开始

(6)=:表示不包含正则表达式,必须与指定的模式精确匹配

(7)~:表示当前 URI 中包含正则表达式,并且区分大小写

(8)~*:表示当前 URI 中包含正则表达式,并且不区分大小写

(9)如果 URI 包含正则表达式,需要用上述两个符合来标识

(10)^~:表示不包含正则表达式,作用与不加符号一致,唯一不同的是,根据最大前缀原则,使用普通 URI 匹配度最高的 location,则停止搜索其他模式

(11)@:定义一个命名的 location,用于内部定向,例如 error_page,try_files

(12)匹配顺序:Nginx 服务器首先检查多个 location 中是否有普通 URI 匹配,如果有多个匹配,先记住匹配度最高的 location 块,再检查正则匹配,从上到下依次匹配,一旦匹配成功,则结束检查,并使用该 location 块处理此请求,如果正则匹配全部失败,就会使用所记录普通 URI 匹配度最高的 location 块处理此请求;当普通匹配的最长前缀匹配有符号 ^~ 时,就不会再匹配正则,直接使用当前匹配的 location 块处理此请求;使用符号 = 定义一个精确匹配 URI、location 块,如果找到一个精确的匹配,则搜索终止

5、root

(1)设置请求的根目录

(2)语法

root path;

(3)path 为 Nginx 服务器接收到请求以后,查找资源的根目录路径

(4)默认值

root html;

(5)位置:http、server、location

(6)root 表示最上层目录

(7)root 处理结果:root 路径 + location 路径

(8)location 路径以 / 结尾,root 无要求

6、alias

(1)更改 location 的 URI

(2)语法

alias path;

(3)path 为修改后的根路径

(4)位置:location

(5)alias 定义一个目录别名

(6)alias 处理结果:使用 alias 路径替换 location 路径

(7)location 路径是以 / 结尾,则 alias 必须以 / 结尾

7、index

(1)设置网站的默认首页

(2)语法

index file……;

(3)默认值

index index.html;

(4)位置:http、server、location

(5)index 后面可以跟多个 file,如果访问时,没有指定具体访问的资源,则会依次进行查找,找到第一个为止

8、error_page

(1)设置网站的错误页面

(2)语法

error_page code…… [=[response]] uri;

(3)位置:http、server、location

(4)当出现响应 code 后的处理方式

(5)可以指定具体跳转的地址

(6)可以指定重定向地址

(7)使用 location 的 @,符合完成错误信息展示

(8)可选项:[=[response]] 将响应代码更改为另一个响应代码

 

优化配置语法

1、sendfile

(1)开启高效文件传输模式

(2)语法

sendfile on |off;

(3)默认值

sendfile off;

(4)位置:http、server、location

2、tcp_nopush

(1)该指令必须在 sendfile 为 on 下才会生效

(2)主要用来提升网络包的传输效率

(3)语法

tcp_nopush on|off;

(4)默认值

tcp_nopush off;

(5)位置:http、server、location

(6)缓存数据,再发送

3、tcp_nodelay

(1)该指令必须在 keep-alive 连接开启的情况下才生效

(2)提高网络包传输的实时性

(3)语法

tcp_nodelay on|off;

(4)默认值

tcp_nodelay on;

(5)位置:http、server、location

(6)有数据,就发送

4、tcp_nopush、tcp_nodelay

(1)在 Linux 2.5.9 版本后,两者兼容

(2)tcp_nopush 开启,确保在发送到客户端之前,已经充分缓存数据包,减少网络开销,并加快文件发送的速度

(3)最后一个没有缓存满而暂停的数据包,Nginx 会忽略 tcp_nopush,tcp_nodelay 强制套接字发送数据

posted @   半条咸鱼  阅读(254)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示