Nginx反向代理

259 阅读2分钟

代理服务器

所谓代理可以理解为代替你做某件事。代理服务器就是客户端和原始服务器之间的一个中转站。

正向代理

VPN服务器将我们的IP变成对外美国的IP地址,使我们可以访问外网,这就是正向代理。

正向代理服务器位于客户端和原始服务器之间,客户端设置代理服务器,向代理服务器发送请求,并设置目标服务器(即原始服务器),代理服务器将原始服务器返回的数据交给客户端。

总结:

  • 客户端需要设置代理服务器
  • 代理服务器和客户端合二为一,对原始服务器暴露代理服务器。

反向代理

反向代理过程中客户端是无感的,客户端访问代理服务器,代理服务器将请求转发到原始服务器,并将原始服务器的返回数据返回给客户端。

总结:

  • 客户端不需要配置任何东西
  • 代理服务器和原始服务器合二为一,对客户端暴露代理服务器。

整体而言就是,正向代理代理的是客户端,反向代理代理的是原始服务器

准备工作

准备两个虚拟机模拟两个服务器:

  • ubuntuMaster :xxx.xxx.xxx.129(用129代替);
  • UbuntuSlave1:xxx.xxx.xxx.130(用130代替);

130 进行如下配置,方便测试:

server {
    listen 80;
    server_name xxx.xxx.xxx.130;
    location /hehe/nene {
        alias /etc/nginx/html/asd;
        index c.html;
    }
    
    location /haha {
        alias /etc/nginx/html/qwe;
        index b.html;
    }
    
    location /xixi {
        alias /etc/nginx/html;
        index a.html;
    }
    
    location / {
        root /etc/nginx/html;
        index d.html;
    }
}

相关静态资源均在对应目录下准备完成。

路由映射规则

具体映射规则为:proxy_pass不加"/"就代理location;proxy加"/"就不代理location。

1、直接访问129

image.png

2、129配置如下:

server {
    listen 80;
    server_name xxx.xxx.xxx.129;
    location /xixi {
        proxy_pass http://xxx.xxx.xxx.130;
    }
}
访问路由映射结果
129/xixi130/xixi

3、129配置如下:

server {
    listen 80;
    server_name xxx.xxx.xxx.129;
    location /xixi {
        proxy_pass http://xxx.xxx.xxx.130/;
    }
}
访问路由映射路由
129/xixi130/
129/xixi/haha130/haha
129/xixihaha130/haha
129/xixihehe/nene130/hehe/nene

4、129配置如下

server {
    listen 80;
    server_name xxx.xxx.xxx.129;
    location /xixi/ {
        proxy_pass http://xxx.xxx.xxx.130/;
    }
}
访问路由映射路由
129/xixihehe/nene404
129/xixi/haha130/haha

5、129配置如下:

server {
    listen 80;
    server_name xxx.xxx.xxx.129;
    location /xixi/hehe/nene/ {
        proxy_pass http://xxx.xxx.xxx.130/hehe/nene/;
    }
}
访问路由映射路由
129/xixi/hehe/nene130/hehe/nene

6、129配置如下:

server {
    listen 80;
    server_name xxx.xxx.xxx.129;
    location /xixi/hehe/nene {
        proxy_pass http://xxx.xxx.xxx.130/hehe/nene/;
    }
}
访问路由映射路由
129/xixi/hehe/nene130/hehe/nene

7、129配置如下:

server {
    listen 80;
    server_name xxx.xxx.xxx.129;
    location /hehe/nene/ {
        proxy_pass http://xxx.xxx.xxx.130;
    }
}
访问路由映射路由
129/hehe/nene130/hehe/nene