nginx反向代理

目录

什么是反向代理

为什么要反向代理

提高访问速度

充当防火墙

解除访问限制

负载均衡

怎么实现反向代理

测试

配置含义


什么是反向代理

例如以下测试接口:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {

    @RequestMapping("/test")
    public String demo() {
        System.out.println("test success!");
        return "test success!";
    }
}

后端项目运行起来,可以用/test直接访问。反向代理就是让一个第三方服务器转发这个/test请求,不直接去访问/test。也就是说反向代理直接访问的不是目标服务器,而是访问一个代理服务器。

为什么要反向代理

提高访问速度

目标服务器返回的数据会缓存在代理服务器中,当客户端再次访问时,会直接从代理服务器中获取数据, 提高了客户端的访问速度。

充当防火墙

因为客户端的请求都必须经过代理服务器转发到目标服务器,所以可以在代理服务器中对请求进行限制,以及过滤一些非法请求。

解除访问限制

有一些服务器我们不能直接访问,但是可以通过反向代理来间接访问。

负载均衡

反向代理服务器可以当作负载均衡器,减轻单台服务器的压力,增加网站的吞吐量。

怎么实现反向代理

以下是nginx配置文件:

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 /api/ {
            proxy_pass   http://localhost:8080/;
        }

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

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

 以下是实现了反向代理的配置:

location /api/ {
    proxy_pass   http://localhost:8080/;
}

nginx默认访问端口是80,也可以用localhost直接访问。

我们通过/api/test去访问nginx,然后请求被修改成/test并转发给后端服务器。

测试

用以上测试接口为例,先测试直接访问。 

测试成功

通过反向代理来访问

测试成功

配置含义

以下配置的含义是将请求路径中的/api去除,并转发给localhost,端口号为8080。

location /api/ {
    proxy_pass   http://localhost:8080/;
}

和上面的配置不同,下面的这种配置是将请求路径直接拼接并转发给目标服务器。

location /api/ {
    proxy_pass   http://localhost:8080;
}

这次将配置修改为下面那个进行测试

使用以下命令重启nginx

nginx -s reload

访问失败

将接口的访问路径改为/api/test

访问成功

这里访问的是80端口,并不是直接访问8080端口,说明反向代理成功。 

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值