正向代理与反向代理(四)
一、概念
1.1 正向代理
举例说明:
A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱。可想而知,最后碰一鼻子灰回来了, 情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱 是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以 说是正向代理,王老师代替A同学借钱这件事,这个过程中,真正借钱的人是谁,马云是不知道的,这点非常关键。
1.2 反向代理
两者的区别在于代理的对象不一样:正向代理代理的对象是客户端;反向代理代理的对象服务端。
以nginx为例,
正向代理,nginx就是为一个服务器地址做代理(服务器是不知道具体的客户端是谁在访问的);
反向代理:nginx代理的是某个服务器,可能有很多的服务器,客户端是不知道现在访问的这个域名最终会指向哪个服器。
上述内容参看自百度搜索。
二、nginx
1、定义:Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
2、应用:做什么事!做代理,正向代理,反向代理。
3、开发语言:nginx是C语言开发,建议在linux上运行。具体安装使用见word文档。
4、使用:电商项目里用到了它做反向代理。通过nginx实现了负载均衡。
1. 分布式项目部署.部署时不同的项目放入到一个tomcat中. 1.1 如果某个某块对应的功能访问频率较高时.部署项目的tomcat压力比较大. 1.2 可以使用nginx降低某一些tomcat的压力. 1.2.1 实现思路,把一个tomcat的事件由多个tomcat完成 1.4 使用nginx之后结构图 1.4.1 要求tomcat中项目是完全相同的. 1.4.2 使用nginx作为中间件,把请求转发到特定的tomcat上 2. 负载均衡(nginx) 2.1 在高并发,高访问频率下,为了降低服务压力,把服务器部署成多份,其中每一份工作量相同的. 3. nginx中实现负载均衡时可以设定每个服务的权重. 3.1 服务器的访问频率= 当前服务器的权重/所有服务器权重和 3.2 考虑到实际情况下不同服务器的配置可能不同. 4. nginx.conf中相关参数.在upstream中server后 的参数:
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails 次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻
5. 实现步骤:参看电商ego-第14天文档。
关于集群、分布式、负载均衡的概念区别可以参看下:https://www.cnblogs.com/panchangde/p/11570395.html
上面是反向代理,下面通过nginx代理vsftp图片服务器是正向代理。
三、vsftp
3.1FTP简介
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议),专有的端口是21。
在多个服务器需要用到公共资源时,设置vsftp图片服务器,用到了nginx做正向代理。使用Nginx代理/home/ftpuser目录,把nginx安装到图片服务器中即可,具体步骤见ego-two。
3.2 VSFTPD简介
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,一个linux的组件。用它来做个图片服务器。
Vsftpd 是通过ftp协议访问的!ftp协议的端口号21。Filezila :sftp:默认端口号22。
3.3知识点详解
面试题:ftp,http分别是什么鬼?
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。
HTTP超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
优点:
- 完全基于网络,覆盖范围广,操作更加灵活。
- 完善的用户权限管理,能指定每个登陆的用户能看到什么、做什么事情。
- 数据传输可以通过SSL 、SSH2进行安全性加密,保证数据不被非法截取,安全性高。
- 使用TCP/IP协议,保证数据的准确到达。
- 传输速度快。当文件大于1M 的时候,FTP 的传输速率比HTTP 更快,文件越大,速度越快。
缺点:
前提:必须有ftp服务器作为载体!
ftp服务器上的文件,必须下载才能使用!
为什么使用FTP服务器?
1.上传文件的时候,速度快!
2.在分布式项目中对资源文件的统一管理。确保路径是唯一的!
3.4 步骤
- FTP服务器
- VSFTPD服务组件
- Nginx目录代理
- FTPClient技术进行文件上传
3.4.1在linux系统中搭建vsftp服务器
参考资料中vsftpd安装手册.doc
3.4.2使用nginx做代理服务器
参考资料中nginx安装手册.doc
3.4.3使用java FTPClient技术上传图片到vsftp服务上
新建一个项目maven项目
在pom.xml中添加依赖
<!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version> </dependency>
实现代码
public class TNginx { public static void main(String[] args) throws SocketException, IOException { // 1.创建FTPClient 对象 FTPClient ftp = new FTPClient(); // 创建连接 ftp.connect("192.168.26.154", 21); // 登录 ftp.login("ftpuser", "bjsxt"); // 设置文件上传的类型为二进制类型 ftp.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置上传文件名称,上传的文件 ftp.storeFile("ldh.jpg", new FileInputStream("d:/img.jpg")); // 退出 ftp.logout(); System.out.println("上传完成!-----"); } }
···
在所有的矛盾中,要优先解决主要矛盾,其他矛盾也就迎刃而解。
不要做个笨蛋,为失去的郁郁寡欢,聪明的人,已经找到了解决问题的办法,或正在寻找。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步