https://bbs.huaweicloud.com/blogs/301714#:~:text=相比于正向,的一种代理服务。

学习背景

一、代理服务

二、正向代理

通过实时查看nginx的访问日志,可以看到Windows下设置代理IP和端口后,本地电脑访问的所有网页会通过代理服务器进行访问网页,实现了正向代理的功能,并且隐藏了用户自己真实的IP~

(2)客户端–Linux代理访问 Linux下也可以验证代理服务器是否能正常代理转发httphttps请求~

curl <http://www.baidu.com/> -v -x 127.0.0.1:80
curl <https://www.baidu.com/> -v -x 127.0.0.1:443

nginx正向代理转发https成功:

二、反向代理

2.1 什么是反向代理?

先来一张图了解下~

相比于正向代理,反向代理的定义如下:

反向代理,指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,只知道去访问代理服务器代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。 反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的。

2.2 nginx实现反向代理

(1)修改nginx配置 修改nginx配置vi /usr/local/nginx/conf/nginx.confhttp模块中配置如下:

nginx反向代理都是结合负载均衡来实现的,这里先直接提供反向代理+负载均衡的配置,负载均衡后一章节介绍~

#反向代理+负载均衡
upstream reverseProxyServer{
    #负载均衡应用服务器A: 权重为10,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
    server 应用服务器A的IP:8080 weight=10 max_fails=2 fail_timeout=10s;
    #负载均衡应用服务器B: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
    server 应用服务器B的IP:8080 weight=5 fail_timeout=10s max_fails=2;
    #负载均衡应用服务器C: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
    server 应用服务器C的IP:8080 weight=5 fail_timeout=10s max_fails=2;
}

server {
    #监听80端口,http默认端口80
    listen 80;
    #服务器IP或域名
    server_name  localhost;
    #反向代理请求路径中含有/appname的所有请求到upstream定义的对应反向代理模块
    location /appname {
        proxy_pass <http://reverseProxyServer>;
    }
}

(2)检查和刷新nginx配置

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload