前言
这个是个人学习Nginx基本使用所总结的笔记,仅供参考
1. Nginx基本概念
1.1 Nginx概念
一个高性能的HTTP和反向代理web服务器,专为性能优化而开发,能承受高并发连接
1.2 正向代理与反向代理
正向代理:在客户端配置代理服务器,必须要通过代理服务器才能访问互联网;
反向代理:只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端(此时对外暴露的是代理服务器的地址,隐藏了真实服务器的IP地址)
1.3 负载均衡
负载均衡:通过增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上改为分发到多个服务器上,即将负载分发到不同的服务器上;
1.4 动静分离
动静分离:将动态页面和静态页面由不同的服务器来解析(先把请求发送到Nginx,Nginx根据请求进行转发,服务器Tomcat部署动态资源,专门服务器部署静态资源),加快解析速度和降低原来单个服务器的压力;
2. Nginx常用命令
注意:使用Nginx操作命令必须要先进入Nginx的目录**/user/local/nginx/sbin**
查看Nginx版本号:**./nginx -v**
启动Nginx:**./nginx**
关闭Nginx:**./nginx -s stop**
重新加载Nginx(热部署):**./nginx -s reload**
3. Nginx配置文件
3.1 Nginx配置文件组成
Nginx配置文件由三部分组成:
第一部分:全局块
主要配置一些影响Nginx服务器整体运行的配置指令;第二部分:events块
主要影响Nginx服务器与用户的网络连接,影响Nginx的性能;第三部分:http块(http块包括http全局块和server块,server块又包含全局server块和location块)
主要配置如代理、缓存和日志定义等绝大多数功能和第三方模块的配置
4. Nginx配置实例
4.1 实例1:反向代理
使用Nginx反向代理,可以根据访问的路径跳转到不同端口的服务中;
利用Nginx实现反向代理的步骤如下:
在window的HOST文件添加域名和ip对应关系的配置(Nginx服务器中的ip地址 要访问的域名)
在Nginx的配置文件的server块进行如下参数配置:
- server_name Nginx服务器中的ip地址(将localhost改为该ip地址)
- location中添加转发路径:proxy_pass 转发到真正要访问的ip地址
实现例子:
1 | # 实现效果: |
4.2 实例2:负载均衡
实现例子:
1 | # 实现效果: |
Nginx分配服务器的策略:
轮询策略(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机就自动剔除
权重策略
weight代表权重默认为1,权重越高被分配的客户端越多
ip_hash策略
每个请求按访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
fair策略
按照后端服务器的响应时间来分配请求,响应时间短的优先分配
4.3 实例3:动静分离
同样需要在Nginx配置文件中对location进行配置
5. Nginx高可用集群搭建
(后续继续学习)
6. Nginx原理解析
结构:master负责管理监控请求派发给worker,worker通过争抢机制完成任务
Nginx中一个master和多个worker进程的好处:
- 可以使用**./nginx -s reload热部署**;
- 每个worker是独立的进程,其中一个worker出现问题不会影响其他worker进行争抢实现请求过程,不会造成服务中断;
设计多个worker才是合适的:
worker数和服务器的CPU数量相等最为合适;
nginx支持的最大并发数:
- 普通的静态访问最大并发数:
worker最大连接数 * worker数 / 2 - HTTP作为反向代理最大并发数:
worker最大连接数 * worker数 / 4