反向代理及其相关配置

1.反向代理

服务器提供的代理为反向代理

原理:当用户向服务器请求资源时,他会 首先进过Nginx,由Nginx再向服务器请求资源,得到资源后,服务器首先会把资源发送到Nginx上,然后由Nginx在发送给用户,此时Nginx就是反向代理服务器。

在这里插入图片描述

2.正向代理

用户提供的代理为正向代理(socket代理,http代理等)

在这里插入图片描述

3.网关

正向代理服务器、反向代理服务器与网关本质上是一样的。

访问网络的入口就是网关,例如家庭中的路由器就相当于一个网关,我在家用手机,平板等上网,访问资源等都会打到网关上,在传输出去。通俗一点网关就相当于学校的大门,你想出去,必须经过大门。

网关特点:中转。

用户访问资源,都需要打进网关,当通过网关将请求发送到服务器,服务器又会把信息,传到网关 ,最后传递给用户。

问题:当用户请求多的,流量大的时候,如果网关上限带宽不大的时候,就会发生阻塞。

解决方法:只能加大代理服务器的带宽。

4. Nginx做反向代理的缺点

因为nginx代理的带宽,决定了用户集群的网络带宽,在比较高的io操作,nginx做反向代理,效果不明显。

解决方案:当用户请求服务器时,必须经过nginx,但是当服务器返回数据是,直接打到用户,不在经过nginx(DR模型

在这里插入图片描述

5.反向代理配置

1.跳转到外网网站上

用到proxy_pass 关键字设置

proxy_pass后面有俩种配置方法

  1. 可以是代理的地址,这个地址可以是一台主机或者一个网址

  2. 可以把它配成一组服务器(下面先配一个服务器)

在这里插入图片描述

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost; 

        location / {
             proxy_pass   http://www.baidu.com;             //只有这个地方改变了
            #root   html;
            #index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

运行结果:

在这里插入图片描述

2.跳转到本机服务器上

设置俩台虚拟主机:这里一个ip:192.168.56.136,另一个是192.168.56.137

在这里插入图片描述

我用的是桥接的方法,直接nat方法和仅主机方法都试过了,但是俩台虚拟机都ping不通。

注意

  • 在代理到网站的时候,虚拟机需要Ping通外网才可以

  • 在代理本机服务器时,俩台虚拟机需要ping通才可以。(你想代理哪个服务器,你就需要和谁ping通)

修改网络配置命令

vi /etc/sysconfig/network-scripts/ifcfg-ens33

CentOS7配置情况:(ip:192.168.56.136)

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="DHCP"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="b73ab354-05d7-4492-87df-d537a32120bd"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.56.136
NETMASK=255.255.255.0
GETWAY=192.168.56.2
DNS1=8.8.8.8

Nginx配置情况:(ip:192.168.56.137)

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="DHCP"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="b73ab354-05d7-4492-87df-d537a32120bd"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.56.137
NETMASK=255.255.255.0
GETWAY=192.168.56.2
DNS=8.8.8.8
         

配置centos7中的nginx.conf文件文件只修改了一个地方

worker_processes  1;




events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;


        location / {
            proxy_pass http://192.168.56.137;         //只有这一个地方变了
            #root   html;
            #index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

配置nginx2中的nginx.conf文件文件没有修改,保持默认情况

worker_processes  1;


events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;


    keepalive_timeout  65;


    server {
        listen       80;
        server_name  localhost;


        location / {
            
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

      
    }


}

为了区分默认的root下的html,将192.168.56.137下面的html文件改为

在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body>
<body style="background-color: pink">
<h1>192.168.56.137</h1>
</body>
</html>

运行结果:(通过在网址中输入192.168.56.136,由于设置了proxy_pass他会跳转到192.168.56.137,然后显示137下面的html文件)

在这里插入图片描述

在这里插入图片描述

目前只是代理一台服务器,可以代理到多台服务器上

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐