Nginx学习笔记
尚硅谷视频笔记
NGINX简介
1.NGINX定义
高性能的HTTP和反向代理web服务器,轻量级的web服务器/反向代理服务器及电子邮件代理服务器。
2.特点
轻量、高并发
3.nginx基本概念
- 反向代理
- 负载均衡
- 动静分离
4.反向代理
正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
反向代理:客户端对反向代理无感知,因为客户端不需要任何配置就可以访问。只要将请求发送到反向代理服务器,由反向代理五=服务器去选择目标服务器获取数据,再将数据返回给客户端。此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP。
5.负载均衡
将原先请求集中到单个服务器上的情况改为请求分发到多个服务器上,将负载分发到不同服务器.
6.动静分离
7.nginx常用命令
- 进入NGINX的目录:/usr/local/nginx/sbin
- 查看NGINX安装的版本 ./nignx -v
- 关闭NGINX命令 ./nginx -s stop
- 启动NGINX命令 ./nginx
- 重新加载正在运行的NGINX的config文件 ./nginx -s reload
8.nginx配置文件
- 从配置文件开始到events块之间的内容,主要会设置一些影响NGINX服务器整体运行的配置指令。主要包括配置运行NGINX服务器的用户(组)、允许生成的worker process数,进程pid的存放路径、日志存放路径和类型以及配置文件的引入等。如 worker_processes 1;值越大,支持的并发处理量也越多
- events块涉及的指令主要影响NGINX服务器与用户饿网络连接,比如work_connection 1024;表示支持网络的最大连接数
- http块,NGINX服务器配置中最频繁的部分,代理,缓存和日志等绝大多数功能和第三方模块的配置都在这里。包括http全局块和server块。
- http全局块配置指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。
- server块和虚拟主机有密切关系。每个http块可以包含多个server块,每个server就相当于一个虚拟主机。每个server块也分为全局server块以及同时包含多个locating块。
- 全局server块:最常见的配置是本地虚拟主机的监听配置和本虚拟主机的名称或IP配置。
- location块:一个server块可以配置多个location块。location块的主要作用是基于NGINX服务器接收到的请求字符串(如:server_name/demo/testnignx),对虚拟主机名称(也可以是IP别名)之外的字符串(/demo/testnignx)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,许多第三方模块的配置也在这里。
9.NGINX配置实例-反向代理
- ./start.sh 启动tomcat服务器
- Windows的host文件不支持端口号
监听XXX.124.176的80端口,并将请求直接转发到http://127.0.0.1:8080 地址
10.NGINX配置实例-反向代理2
- 服务端启动两个tomcat实例,一个配置端口8080,一个配置端口8081;
- 两个tomcat实例webapp文件中分别放置两个文件夹vod和edu,比如8080的tomcat放edu,8081的放vod;
- NGINX配置文件中配置一个server,监听服务器的9001端口,如果发送的请求为edu,则转发到8080端口,如果发送的请求为vod则转发到8081端口,如下图:
也即是:访问http://server:9001/edu/XXX 实际上就会访问http://localhost:8080/edu/XXX
访问http://server:9001/vod/XXX 实际上就会访问 http://localhost:8080/vod/XXX  关于location 参考:zhuanlan.zhihu.com/p/137146854
11.NGINX配置实例-负载均衡
- nginx分配服务器策略
- 轮询,按时间顺序分配给upstream中的服务器列表,并且自动剔除坏掉的服务器。是NGINX负载均衡默认的策略
- 权重,weight代表权重,默认为1,权重越高,被分配的客户端越多
- ip_hash:每个请求按照访问ip的hash结果分配,这样每个访客就会固定访问一个后端服务器,可以解决session问题。具体配置是在upstream服务器列表中加入 ip_hash;
- fair方式:按后端服务器的响应时间来分配请求,响应时间短的优先分配。配置:在upstream中加入 fair;
12.NGINX配置实例-动静分离
- 动态请求跟静态请求分开,NGINX处理静态页面,tomcat处理动态页面
- 两种方式:
- 静态文件独立成单独的域名,放在独立的服务器上,主流方案
- 动静态文件混合在一起发布,通过NGINX区分。
- 配置方式