记一次nginx配置服务器代理发送请求(外网请求内网ip)

用nginx一直都不是很明白里面的各种操作,例如反向代理,负载均衡这些操作,都没了解过,就瞎照着网上扔上去一个配置就完事了。
结果,坑就来了。
先说说需求: 一共3个服务器,前端我1个,后端2个。 目的是需要所有的请求都请求到我前端的服务器上,在我前端服务器再次发送请求到后端的两个服务器上,听起来还算简单,但里面有个硬性要求就是。
必须通过内网ip地址访问后端服务器!
必须通过内网ip地址访问后端服务器!
必须通过内网ip地址访问后端服务器!
就是这个需求我直接跪了
先说说跪的原因:
内网ip有个要求,访问者必须在内网里发送请求,但用户是不可能在内网访问的,所以直接用内网的ip地址发送请求是获取不到任何信息的。

那通过内网ip地址发送请求的思路只能是:

用户依旧用外网ip地址发送请求,但所有接口的地址全部都是前端服务器的公网ip。也就是所谓的服务器代理。如图:所有请求都先通过一台服务器,这台服务器再通过内网ip地址访问各个不同的后台服务器。
在这里插入图片描述
理论说了那么多,事实上配置非常简单,只是有各种小坑需要注意。

干货:
1.配置前端所有发接口的地址
http://www.kalec.com/ABIS_ORIGIN
http://www.kalec.com/CAS_ORIGIN
在这里插入图片描述

这个配置相当于在你的所有请求都加一个前缀
如图:
每次发请求的请求头都是http://kalec.com/ABIS_ORIGIN/…
在这里插入图片描述

接下来就是nginx服务器配置了:

//打开nginx.conf文件
server {
        listen       80;
        server_name  kalec.com  http://www.kalec.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        location /ABIS_ORIGIN/ {
        	proxy_set_header Host $host:$server_port;
			proxy_pass http://172.99.300.122:8099/;
        }
        location /CAS_ORIGIN/ {
        	proxy_set_header Host $host:$server_port;
			proxy_pass http://172.99.200.110:8090/;
        }

以上就是nginx做的配置,需要记住 “/”这个符号很重要 不能少任何一个,认真看好所有“/”的地方,否则会发送错误的请求地址。

简单解释下配置:
当请求地址带有/ABIS_ORIGIN/的时候,会自动将地址替换成172.99.300.122:8099来发送请求
举例:
请求地址:http://www.kalec.com/ABIS_ORIGIN/order/list?page=1(外网请求地址)
经过nginx转发后:http://172.99.300.122:8099/order/list?page=1(内网请求地址)

到此为止,一个服务器转发内网ip请求的操作就完成啦~感谢观看。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值