nginx基础-反向代理

一、反向代理概述

简单来说:就是让客户的请求通过代理服务器才能访问到服务端

复杂来说:反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。

二、为什么要用反向代理

(1)负载均衡 (Load Balancing):

  • 智能分配请求至多台后端服务器
  • 避免单点过载,提升系统吞吐量、响应速度和容灾能力
  • 自动屏蔽故障节点(健康检查)

(2)提升安全性:

  • 隐藏真实后端服务器,减少攻击面
  • 内置防护机制(流量限制/IP过滤/请求过滤)
  • 统一管理HTTPS加解密,降低后端压力

(3)提高性能和可伸缩性:        

  • 静态文件缓存:直接响应高频静态资源
  • 响应压缩:减少网络传输体积
  • 高效连接复用:优化后端通信效率
  • 水平扩展:轻松添加后端服务器

三、反向代理该怎么使用

1.反向代理配置语法

proxy_pass:该指令用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。

示例:

//代理服务器nginx配置

server {

listen 80;

server_name localhost;

location /{

#proxy_pass http://192.168.200.146;

proxy_pass http://192.168.200.146/;

}

}

例如:代理服务器地址是192.168.200.133,用户访问192.168.200.133,会自动转发到192.168.200.146,然后192.168.200.146返回响应。

2.配置实例:

 (1)代理服务器nginx配置

server {

  listen       8083;

  server_name  139.129.50.249;

  location / {

            proxy_pass http://121.40.95.121/;

                                }

         }

可以看出代理服务器监听8083的端口,当检测到请求时转发到121.40.46.121服务器

(2)服务器设置

服务器我没有配置。直接访问,原始80端口显示nginx欢迎页面

(3)成果展示

四、反向代理拓展

1.代理的的地址加不加/

server{
	listen 80;
	server_name localhost;
	location /server{
		#proxy_pass http://192.168.200.146;
		#proxy_pass http://192.168.200.146/;
	}
}
当客户端访问 http://localhost/server/index.html
这个时候,第一个proxy_pass就变成了http://localhost/server/index.html
第二个proxy_pass就变成了http://localhost/index.html效果就不一样了。

简而言之:就是如果不加/,就是拼接访问路径;加/就是替换访问路径。 

2.proxy_set_header

该指令可以更改Nginx服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给代理的服务器

语法

proxy_set_header field value;

默认值

proxy_set_header Host $proxy_host; proxy_set_header Connection close;

位置

http、server、location

需要注意的是,如果想要看到结果,必须在被代理的服务器上来获取添加的头信息。

被代理服务器: [192.168.200.146]

server {
        listen  8080;
        server_name localhost;
        default_type text/plain;
        return 200 $http_username;
}

代理服务器: [192.168.200.133]

server {
        listen  8080;
        server_name localhost;
        location /server {
                proxy_pass http://192.168.200.146:8080/;
                proxy_set_header username TOM;
        }
    }


3.proxy_redirect

该指令是用来重置头信息中的"Location"和"Refresh"的值。

语法

proxy_redirect redirect replacement; proxy_redirect default; proxy_redirect off;

默认值

proxy_redirect default;

位置

http、server、location

》为什么要用该指令?

服务端[192.168.200.146]

```

server {

    listen  8081;

    server_name localhost;

    if (!-f $request_filename){

     return 302 http://192.168.200.146;

    }

}



```

代理服务端[192.168.200.133]

```

server {

listen  8081;

server_name localhost;

location / {

proxy_pass http://192.168.200.146:8081/;

proxy_redirect http://192.168.200.146 http://192.168.200.133;

}

}

```

》该指令的几组选项

proxy_redirect redirect replacement;

redirect:目标,Location的值

replacement:要替换的值

proxy_redirect default;

default;

将location块的uri变量作为replacement,

将proxy_pass变量作为redirect进行替换

proxy_redirect off;

关闭proxy_redirect的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值