Nginx 认识和深入
Nginx 简介
Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。

正向代理
正向代理:局域网中的电脑用户想要直接访问网络是不可行的,只能通过代理服务器来访问,这种代理服务就被称为正向代理。

总结: 代理用户的访问,是正向代理。
反向代理
反向代理:客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。
此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

总结:代理服务器获取数据的,是反向代理。
负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕之后,再将结果返回给客户端。
普通请求和响应过程如下图:

但是随着信息数量增长,访问量和数据量飞速增长,普通架构无法满足现在的需求。
我们首先想到的是升级服务器配置,可以由于摩尔定律的日益失效,单纯从硬件提升性能已经逐渐不可取了,怎么解决这种需求呢?
我们可以增加服务器的数量,构建集群,将请求分发到各个服务器上,将原来请求集中到单个服务器的情况改为请求分发到多个服务器,也就是我们说的负载均衡。
负载均衡图:

假设有 15 个请求发送到代理服务器,那么由代理服务器根据服务器数量,平均分配,每个服务器处理 5 个请求,这个过程就叫做负载均衡。
为了解决高并发问题,负载均衡服务器拦截所有的请求,采用负载均衡算法,分配到不同的tomcat上。
upstram XXX: 表示负载均衡服务器,也是通常再说的上游服务器。
三种基本的负载均衡算法: 轮询、权重、ip绑定。
轮询: 这是Nginx默认的负载均衡算法,简单来说就是从上到下按顺序轮流(127.0.0.1:8082轮完就轮到127.0.0.1:8081,127.0.0.1:8081轮完就轮到127.0.0.1:8082)。
upstream tomcat {
server 127.0.0.1:8082;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name www.tuesdayma.com;
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
权重: 就是哪台服务器配置好就多轮几次,或者你就想某个服务器多轮几次。简单来说就是轮到次数的比例,数字越大表示轮到的概率越大。( weight都设置为1的时候和轮询没什么区别)关键字 weight。
upstream tomcat {
server 127.0.0.1:8082 weight=2;
server 127.0.0.1:8081 weight=5;
}
server {
listen 80;
server_name www.tuesdayma.com;
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
ip绑定: 你第一次访问的时候,Nginx会根据你的ip通过哈希算法,算出某个值,然后取分配哪个Tomcat,当你第二次访问,第三次访问。。。之后的任何一次访问都是去请求那个第一次访问的Tomcat,关键字 ip_hash。
upstream tomcat {
server 127.0.0.1:8082 ;
server 127.0.0.1:8081 ;
ip_hash;
}
server {
listen 80;
server_name www.tuesdayma.com;
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力。
动静分离之前:

动静分离之后:

Nginx 安装
安装参考地址
https://blog.youkuaiyun.com/Crazy_Cw/article/details/105728314
Nginx 常用命令
#查看版本
./nginx -v
#启动
./nginx
#关闭
./nginx -s stop
./nginx -s quit
#重新加载
./nginx -s reload
Nginx 的配置文件
官网对各个模块参数配置的解释说明网址: Nginx中文文档

配置文件分三部分组成:
-
全局块
从配置文件开始到
events块之间,主要是设置一些影响 Nginx 服务器整体运行的配置指令。并发处理服务的配置,值越大,可以支持的并发处理量越多,但是会受到硬件、软件等设备的制约。

-
events块
影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 workprocess 下的网络连接进行序列化,是否允许同时接收多个网络连接等等。

-
HTPP块
诸如反向代理和负载均衡都在此配置。
location [ = | ~ | ~* | ^~] url{ }location指令说明,该语法用来匹配 url,语法如上:- **=:**用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。
- **~:**用于表示 url 包含正则表达式,并且区分大小写。
- **~*:**用于表示 url 包含正则表达式,并且不区分大小写。
- **^~:**用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。
- 如果有 url 包含正则表达式,不需要有 ~ 开头标识。
8577

被折叠的 条评论
为什么被折叠?



