正向代理与反向代理(五)

一、概念

1.1 正向代理

举例说明:

A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱。可想而知,最后碰一鼻子灰回来了, 情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱 是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以 说是正向代理,王老师代替A同学借钱这件事,这个过程中,真正借钱的人是谁,马云是不知道的,这点非常关键。

我们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些kexue上网工具扮演的就是典型的正向代理角色。
用浏览器访问http://www.google.com 时,被残忍的block,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。

1.2 反向代理

大家都有过这样的经历,拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是,你的问题能不能得到专业的解答,你只二要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。
反向代理隐藏了真实的服务端,当我们请求电ww.baidu.com的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。
Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

 两者的区别在于代理的对象不一样:正向代理代理的对象是客户端;反向代理代理的对象服务端。

以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)是互联网上应用最为广泛的一种网络协议。

优点:

  1. 完全基于网络,覆盖范围广,操作更加灵活。
  2. 完善的用户权限管理,能指定每个登陆的用户能看到什么、做什么事情。
  3. 数据传输可以通过SSL 、SSH2进行安全性加密,保证数据不被非法截取,安全性高。
  4. 使用TCP/IP协议,保证数据的准确到达。
  5. 传输速度快。当文件大于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("上传完成!-----");

       }

}

 ···

如果错过太阳时你流了泪,那你也要错过群星了。
在所有的矛盾中,要优先解决主要矛盾,其他矛盾也就迎刃而解。
不要做个笨蛋,为失去的郁郁寡欢,聪明的人,已经找到了解决问题的办法,或正在寻找。
原文地址:https://www.cnblogs.com/szrs/p/13439664.html