1 访问原来无法访问的资源,如google
2 可以做缓存,加速访问资源
3 对客户端访问授权,上网进行认证
4 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
5 代理中间进行拦截,可以进行访问控制,限制客户端对内部网络资源的访问。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/48964d36df8947bab72619dc0faf5af4.png)
**反向代理**
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
**反向代理的作用**
1 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
2 负载均衡,通过反向代理服务器来优化网站的负载
3 可以进行会话保持,确保客户端请求连续发送到同一个后端服务器上,保证用户体验。
4 可以进行 SSL 加密和解密,提高数据传输的安全性。
5 可以通过 CDN 等手段优化网络带宽使用,提高客户端访问速度。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e6bdf619732340f8a31e8b3aee0486f5.png)
###
## 2.2 nginx介绍
主要功能有:
**反向代理**
做请求转发。用户发送了一个http请求,nginx代理服务器接收请求,然后将请求转发给内部网络上的服务器,
并将从服务器上得到的结果返回给internet上请求连接的客户端。
**负载均衡**
负载均衡:多在高并发情况下需要使用。其原理就是将数据流量分摊到多个服务器执行,
减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。
**动静分离**
Nginx提供的动静分离是指把动态请求和静态请求分离开,合适的服务器处理相应的请求,
使整个服务器系统的性能、效率更高。
Nginx可以根据配置对不同的请求做不同转发,这是动态分离的基础。静态请求对应的静态资源可以直接放在Nginx上做缓冲,更好的做法是放在相应的缓冲服务器上。动态请求由相应的后端服务器处理。
###
## 2.3 nginx负载均衡
负载均衡(Load Balance)意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、
企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器
闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可。
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
**nginx的负载均衡**
所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游的应用服务器,这样即使某一个服务器宕机
也不会影响请求的处理,或者当应用服务器扛不住了,可以随时进行扩容。
1: 在server外面增加配置upstream
upstream 名字 {
server 127.0.0.1: 8080;
server 127.0.0.1: 8081;
}
2: 指定上游名字,则会随机选择其中一个转发。
location / {
include uwsgi_params;
uwsgi_pass 名字;
}
负载均衡策略:https://www.cnblogs.com/liuqingzheng/p/16322504.html
###
## 2.4 nginx动静分离
是一种通过配置nginx服务器,将静态资源和动态资源分别存放在不同的服务器或路径上,
以提高网站的性能和并发访问能力。把后端所有的静态文件收集起来,用nginx转发。
http {
server {
listen 80;
server_name example.com;
# 配置动态请求的转发
location ~\* \.php$ {
proxy\_pass http://dynamic\_backend\_server;
}
# 配置静态资源的处理
location /static/ {
root /path/to/static/folder;
expires 7d;
access\_log off;
}
# 配置其它静态资源的处理
location /images/ {
root /path/to/images/folder;
expires 30d;
access\_log off;
}
}
}
在上述配置中,动态请求(以.php结尾的请求)会被转发给名为dynamic\_backend\_server的后端服务器处理,而静态资源则会由nginx自身根据不同的URL路径进行处理。可以根据实际需求,将不同的静态资源放置在不同的路径或服务器上,并配置相应的location规则。
##
## 3 wsgi uwsgi uWSGI,cgi,fastcgi 分别是什么?
CGI:通用网关接口(Common Gateway Interface/CGI),CGI描述了服务器(nginx,apache)
和请求处理程序(django,flask,springboot web框架)之间传输数据的一种标准
所有bs架构软件都是遵循CGI协议的
一句话总结: 一个标准,定义了客户端服务器之间如何传数据
FastCGI:快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本
FastCGI致力于减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求
常见的fastcgi服务器:Apache,Nginx,Microsoft IIS
CGI的升级版
WSGI:Python Web Server Gateway Interface,缩写为WSGI,Python定义的Web服务器(比如uWSGI) 和Web应用程序或框架(比如django)之间的一种通用的接口规范
一句话总结:为Python定义的web服务器和web框架之间的接口标准
uWSGI:符合wsgi协议的 web服务器,用c写的,性能比较高,咱们通常用来部署django,flask
一句话总结:一个Web Server(web服务器),即一个实现了WSGI协议的服务器,处理发来的请求及返回响应。
uWSGI:项目上线使用的web服务器
wsgiref:测试阶段使用的
uwsgi:uWSGI服务器实现的独有的协议,用于定义传输信息的类型,是用于前端服务器与 uwsgi 的一种线路协议
一句话总结: uWSGI自有的一个协议
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6e4fb7ddf1ba400dabaff66e56dd27f9.png)
##
## 4 uWSGI跟Nginx
###
## 4.1 uWSGI跟Nginx的区别
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
[外链图片转存中…(img-JDUf5mc0-1712784965364)]