| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Nginx从入门到进阶 -> 正文阅读 |
|
[系统运维]Nginx从入门到进阶 |
目录 1. Nginx简介????????Nginx(发音同 engine x)是一款基于异步框架的轻量级/高性能的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·赛索耶夫)所开发,最初供俄国大型网站Rambler.ru及搜寻引擎Rambler使用。 Nginx特点 ? ? ? ? 优点: ????????高并发量:基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应 ? ? ? ? 缺点: ????????动态处理差:nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺。 2. Nginx安装部署2.1 安装所需依赖
2.2 下载安装包,编译安装
2.3?验证安装
返回内容如下所示,表示安装已经完成。
2.4 nginx服务相关命令
3?Nginx的配置详解使用命令nginx -t可以检查nginx的配置是否正确
配置文件路径:/usr/local/nginx/conf/nginx.conf 日志文件路径:/usr/local/nginx/logs/ web目录:/var/www/html/ 3.1?全局配置段主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置:
3.2?http配置段主要配置server通用的一些配置
3.3?Server常见配置属性常见样式:
server配置段最重要的属性是listen和server_name。它们都是用于匹配并处理请求的。
使用原则:首先将所有样式补全成IP:Port,然后匹配,匹配Server多,那么接着使用Server_name匹配 server_name属性 ????????作用:定义Server监听的域名,当域名匹配时候才进行下一步操作 ????????表现形式:
????????优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法规则。 ????????非法域名/IP,表示请求到该主机上一个不存在的IP或者域名 root属性 ????????作用:定义Server相应请求的html文件所在路径 ????????表现形式:
index属性 ????????作用:定义响应请求后返回的文件名称或格式 ????????表现形式:
return属性 ????????作用:定义响应请求后返回的http状态码 ????????表现形式: ????????????????return?????? 444; location常见配置属性 ????????location主要是根据Server匹配到的请求路径和关键字去响应和处理。 ????????语法:
????????其中:optional_modifier是匹配条件,location_match是匹配的样式,{}是要执行的操作。匹配条件主要有两种:正则/前缀字符。 正则匹配
普通正则? 普通匹配
使用原则: ????????前提:根据请求url,获取uri即除了域名/IP之外的部分,用于location匹配 ????????如果有精确匹配,即 =/路径,找到匹配项后,结束匹配。 ????????????????location = 路径 {}? 或者? location 完整路径 {} ????????如果有优先匹配,即 ^~,找到匹配项后,结束匹配。 ????????????????location ^~ 路径 ????????如果有正则匹配,即 ~|!~|~*|!~*,找到匹配项后,不会终止继续匹配,直到找到合适的 ????????????????location ~* 正则字符 {} ????????如果普通匹配到多个,则使用location_match最长的。 匹配示例: ????????
访问效果如下: 访问根目录/, 比如http://a.com/ 将匹配规则A 访问 http://a.com/login 将匹配规则B 访问 http://a.com/static/a.html 将匹配规则C 访问 http://a.com/a.gif, http://a.com/b.png 规则D和E均适合,按顺序优先使用规则D,而 http://a.com/static/c.png 则优先匹配到规则C 访问 http://a.com/a.PNG 则匹配规则E,因为规则E不区分大小写。 访问 http://a.com/a.XHTML 使用规则G。 访问 http://a.com/category/id/1111 则最终匹配到规则H。 关于URL尾部的/有如下注意事项: 1 location中的location_match字符有无"/"受影响。/user/不等同/user。/user可以匹配/user/abc也可以匹配/userabc,但/user/只能匹配/user/abc 2 对于访问网站域名(http://sswang.com/),尾部有无"/"不受影响。因为浏览器会自动补全"/"。 3 对于访问网站域名后面的路径(http://sswang.com/other/)。尾部的"/"很重要。 URL尾部的"/"表示目录,没有"/"表示文件,而且文件找不到的话,会发生重定向。 ????????/other/:表示服务器会自动去该目录下找对应的默认文件。 ????????/other:表示服务器会先去找other文件,找不到的话会将other当成目录,重定向到/other/,去该目录下找默认文件 在location内部常用的功能属性非常多,常见的基本属性、临时跳转、访问控制、目录列表等。 基本属性
临时跳转
访问控制
目录列表
root属性和alias属性的区别 root 和 alias 所起的作用都是指定响应请求所用文件的路径,只是他们有些许的区别
效果一:访问http://localhost/img/1.html,nginx找/var/www/image/目录下的文件 效果二:访问http://localhost/img/1.html,nginx找/var/www/image/img/目录下的文件 location核心动作 ????????Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。 指令语法
?作用:响应时按顺序查找file,找到则返回file内容,否则的话进行内部重定向(uri)或返回状态码(code)。 常见示例
4.?Nginx进阶知识4.1 nginx代理区别 官方介绍 官方资料:http://www.nginx.cn/doc/standard/httpproxy.html 官方的代理属性很多,主要介绍proxy_pass和proxy_set_header属性 官方代码示例
属性详解:proxy_pass 指令设置被代理服务器的地址和被映射的URI,地址可以使用主机名或IP加端口号的形式 proxy_pass关键点 proxy_pass后面的路径最后的/作用很重要!!! 示例代码:
假设我们访问的url是 http://domain.com/html/test.js,如何理解上述两种proxy_pass的区别呢?
?nginx代理实践 8000的反响代理服务器代理8001
?4.2?负载均衡4.2.1 nginx upstream模块????????官方资料:http://www.nginx.cn/doc/standard/httpupstream.html ????????官方的代理属性很多,我们主要介绍upstream和ip_hash属性
属性详解: ????????upstream 主要是定义一个后端服务地址的集合列表,每个后端服务使用一个server命令表示 ????????upstream {} 和 Server {} 两部分内容属于平级关系。 后端服务状态 ????????在upstream模块中,可以使用server命令指定后端服务器的地址,同时还可以设置后端服务器在负载均衡调度中的状态,常用的状态有以下几种:
4.2.2?负载均衡调度算法?官方资料:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#example Nginx提供的负载均衡策略有两种: ????????内置策略:nginx自带的算法 ????????雨露均沾型:轮训、加权轮训、哈希 ????????定向服务型:ip_hash、least_conn、cookie、route、lean、 ????????商业类型:ntlm、least_time、queue、stick ????????扩展策略:各种结合业务场景自定义的算法或者第三方算法 自定义算法 ????????第三方算法:fair、url_hash 常用算法简介:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 6:14:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |