学习是一个逐步发现自己无知的过程!

正向代理~反向代理

正向代理

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

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

 

反向代理

大家都有过这样的经历,拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。

反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

配置反向代理

准备一台代理服务器

安装并且配置好Nginx

1.Nginx代理服务概述[flag]

正向代理:类似于VPN功能[代理上网|翻墙]--> 网关指向代理服务器 ​ 反向代理:客户端 -访问-> 代理 --> web服务器

1.1Nginx代理配置语法

  推荐写法
      server{
          listen 80;
          server_name blog.oldboy.com;
          location / {
              proxy_pass http://172.16.1.7;
              include proxy_params;
          }
      }
      server{
          listen 80;
          server_name edu.oldboy.com;
          location / {
              proxy_pass http://172.16.1.7;
              include proxy_params;
          }
      }  

1.2Nginx反向代理示例[flag

  • 角色 外网IP(NAT) 内网IP(LAN) 主机名 Proxy eth0:10.0.0.5 eth1:172.16.1.5 lb01 web01 eth0:10.0.0.7 eth1:172.16.1.7 web01

  1.web01服务器:
      配置一个网站,监听在8080,仅运行172网段能访问
  [root@web01 ~]# cd /etc/nginx/conf.d/
  [root@web01 conf.d]# vim web.conf
  server {
    listen 8080;
    server_name 172.16.1.7;
  
  location / {
    root /code_8080;
    index index.html;
    deny 10.0.0.0/24;
    allow all;
    }
  }

创建web1的基础环境文件

  [root@web01 conf.d]# mkdir /code_8080
  [root@web01 conf.d]# echo "web01-7...." >/code_8080/index.html
  [root@web01 conf.d]# systemctl restart nginx2.proxy代理服务器:
  

开始安装并配置代理服务

     配置一个代理,监听在80,让10.0.0.1客户端,能够通过代理访问到后端的 172.16.1.7这个网站
  [root@lb01 ~]# cat /etc/yum.repos.d/nginx.repo 
  [nginx]
  name=nginx repo
  baseurl=http://nginx.org/packages/centos/7/$basearch/
  gpgcheck=0
  enabled=1

1.安装

[root@lb01 ~]# yum install nginx -y

2.配置

  [root@lb01 ~]# cd /etc/nginx/conf.d/
  [root@lb01 conf.d]# rm -f default.conf
  [root@lb01 conf.d]# cat proxy_web_node1.conf 
  server {
    listen 80;
    server_name nginx.oldboy.com;
  
  location / {
    proxy_pass http://172.16.1.7:8080;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
  ##启动nginx并加入开机自启动
  [root@lb01 conf.d]# systemctl enable nginx
  [root@lb01 conf.d]# systemctl start nginx

3.优化下proxy的配置

  [root@lb01 conf.d]# cat /etc/nginx/proxy_params 
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  
  proxy_connect_timeout 30;
  proxy_send_timeout 60;
  proxy_read_timeout 60;
  
  proxy_buffering on;
  proxy_buffer_size 32k;
  proxy_buffers 4 128k;

编写web01的测试网页文件

  [root@lb01 conf.d]# cat proxy_web_node1.conf 
  server {
    listen 80;
    server_name nginx.oldboy.com;
  
  location / {
    proxy_pass http://172.16.1.7:8080;
    include proxy_params;
    }
  }
  
  ###检查语法并重启
  [root@lb01 conf.d]# nginx  -t
  [root@lb01 conf.d]# nginx  -s  reload

3.配置hosts解析

  proxy
      10.0.0.5
      172.16.1.5
  web
      172.16.1.7   
  
  如果出现故障
      1.直接访问web测试是否没任何问题
      2.检查proxy代理服务器是否有问题[没有携带头部信息|proxy_pass 写错了]
  
  代理缺点:
      只能代理转发一台服务器
      proxy                web 172.16.1.7
  blog.oldboy.com      -》 blog.oldboy.com 
      
  
  2.Nginx负载均衡
      2.1Nginx负载均衡按层划分
      2.1Nginx负载均衡配置场景
赞(1)
未经允许不得转载:劉大帥 » 正向代理~反向代理

你的评论可能会一针见血! 抢沙发

登录

找回密码

注册