背景介绍
1.正向代理
正向代理类似一个跳板,代理访问服务器资源,比如我们想访问一个资源,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服务器,代理服务器能够访问资源,这样由代理去资源服务器取到返回数据,再返回给我们,这样我们就能访问资源了, 正向代理服务器一般都是客户端代理,代理客户端执行业务
2.反向代理
反向代理服务器位于用户与目标服务器之间,对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。反向代理服务器一般都是服务器端代理.用户无需关心真实的服务器是谁.
Nginx简介
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 内置了轮询和加权轮询来达到负载均衡的目的
Nginx 还有一个很牛的功能是动静分离。
在我们的软件开发中,有些请求是需要后台处理的;有些请求是不需要后台处理的,比如说 css、js 这些文件请求,这些不需要经过后台处理的文件就叫静态文件。
我们可以根据一些规则,把动态资源和静态资源分开,然后通过 Nginx 把请求分开,静态资源的请求就不需要经过 Web 服务器处理了,从而提高整体上的资源的响应速度。
Nginx 配置
Nginx 配置结构图
main # 全局配置
├── events # 配置网络连接
├── http # 配置代理、缓存、日志等
│ ├── upstream # 配置负载均衡
│ ├── server # 配置虚拟主机,可以有多个 server
│ ├── server
│ │ ├── location # 用于匹配 URI(URL 是 URI 的一种),可以有多个 location
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
Nginx 默认配置
worker_processes 1; # Nginx 进程数,一般设置为和 CPU 核数一样
events {
worker_connections 1024; # 每个进程允许最大并发数
}
http {
include mime.types; # 文件扩展名与类型映射表
default_type application/octet-stream;
sendfile on; # 开启高效传输模式
keepalive_timeout 65; # 保持连接的时间,也叫超时时间,单位秒
server {
listen 8080; # 配置监听的端口
server_name localhost; # 配置的域名
location / {
root html; # 网站根目录
index index.html index.htm; # 默认首页文件
}
error_page 500 502 503 504 /50x.html; # 默认50x对应的访问页面
location = /50x.html {
root html;
}
}
include servers/*; # 加载子配置项
}
配置关键字分析
关键字:
-
events 可以配置nginx 的环境
-
http 请求协议. nginx 可以接收http请求规则, 协议有且只有一份.
-
server 一个反向代理服务,就是一个server
-
listen nginx中一般的监听端口号:80
-
server_name nginx拦截URL中的哪个请求.
-
location 拦截服务之后,开始反向代理配置的核心关键字
-
/ 需要拦截的请求的路径 /拦截根目录 /images 拦截images请求路径.
-
root root代表反向代理的是一个文件夹
-
index 反向代理时 默认加载的页面.
代理图片(例)
请求地址: http://image.too.com/2021/11/16/40a7728d61bf4c0bb2c75766d0a0f99f.jpg
磁盘地址: E:/src/images/2021/11/16/40a7728d61bf4c0bb2c75766d0a0f99f.jpg
代理规则: http://image.too.com 代理到 E:/src/images
#配置图片代理 写完之后记得保存 ctrl+s
server {
listen 80;
server_name image.too.com; #或直接代理localhost地址 不需要修改hosts文件
location / {
root E:/src/images;
}
}
代理后需要修改hosts文件
本地位置:位置: C:\Windows\System32\drivers\etc
#图片服务器
127.0.0.1 image.too.com
前后端代理(例)
#配置后端服务器
server {
listen 80;
server_name manage.too.com;
location /url {
#表示映射远程链接
#proxy_pass http://localhost:8091/url;
proxy_pass http://toos; #采用的集群方式 toos集群名称
}
}
#集群配置 负载均衡策略 1默认 轮询 2权重 3.iphash
#定义tomcat服务器集群
#ip_hash 指负载均衡采用 iphash 的策略
#weight=1 指 负载均衡采用 权重 的策略
###如果两个都不加 默认就是 轮询 的方式
#max_fails=1 指定最大的失败的次数 规定最大的失败次数1
#fail_timeout=60s; 如果失败的次数达到最大失败次数60s内, nginx不会再次访问故障机.
upstream toos {
#ip_hash; weight=6
server localhost:8091 weight=6; max_fails=1 fail_timeout=60s;
server localhost:8092 weight=6; max_fails=1 fail_timeout=60s;
server localhost:8093 weight=6; max_fails=1 fail_timeout=60s;
}